Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java/Android:如何简化这个复杂的嵌套if-else和for循环代码块?_Java_Android - Fatal编程技术网

Java/Android:如何简化这个复杂的嵌套if-else和for循环代码块?

Java/Android:如何简化这个复杂的嵌套if-else和for循环代码块?,java,android,Java,Android,我有两段基本相同的代码,只是根据if语句的条件使用了几个不同的常量。我想问一下,这里是否有人知道如何简化代码,这样我就不会有太多的代码重复 代码如下: public static final int numLandscapeRows = 5; public static final int numPortraitRows = 8; public static final int numLandscapeImagesPerRow = 8; public static final int numPo

我有两段基本相同的代码,只是根据if语句的条件使用了几个不同的常量。我想问一下,这里是否有人知道如何简化代码,这样我就不会有太多的代码重复

代码如下:

public static final int numLandscapeRows = 5;
public static final int numPortraitRows = 8;
public static final int numLandscapeImagesPerRow = 8;
public static final int numPortraitImagesPerRow = 5;
public static boolean imageViewLandscapeTracker[][] = new boolean[numLandscapeRows][numLandscapeImagesPerRow];
public static boolean imageViewPortraitTracker[][] = new boolean[numPortraitRows][numPortraitImagesPerRow];

if (screenWidth > screenHeight) {
    TableRow tableRow[] = new TableRow[numLandscapeRows];
    ImageView imageView[] = new ImageView[numLandscapeImagesPerRow];

    for (i = 0; i < numLandscapeRows; i++) {
        for (j = 0; j < numLandscapeImagesPerRow; j++) {
            imageView[j].setOnClickListener(new OnClickListener(){
                public void onClick(View v) {
                    if (imageViewLandscapeTracker[i-1][j-1] == false) {
                        imageViewLandscapeTracker[i-1][j-1] = true;
                        v.setBackgroundResource(R.drawable.launcher);
                    } else {
                        imageViewLandscapeTracker[i-1][j-1] = false;
                        v.setBackgroundResource(R.drawable.icon);
                    }
        }
    }

} else {
    TableRow tableRow[] = new TableRow[numPortraitRows];
    ImageView imageView[] = new ImageView[numPortraitImagesPerRow];

    for (i = 0; i < numPortraitRows; i++) {
        for (j = 0; j < numPortraitImagesPerRow; j++) {
            imageView[j].setOnClickListener(new OnClickListener(){
                    public void onClick(View v) {
                        if (imageViewPortraitTracker[i-1][j-1] == false) {
                            imageViewPortraitTracker[i-1][j-1] = true;
                            v.setBackgroundResource(R.drawable.launcher);
                        } else {
                            imageViewPortraitTracker[i-1][j-1] = false;
                            v.setBackgroundResource(R.drawable.icon);
                        }
        }
    }
}
publicstaticfinal int numLandscapeRows=5;
公共静态最终int numPortraitRows=8;
公共静态最终int numLandscapeImagesPerRow=8;
公共静态最终整数mportraitimagesperrow=5;
公共静态布尔图像ViewLandscapeTracker[][]=新布尔值[numLandscapeRows][numLandscapeImagesPerRow];
公共静态布尔值ImageViewStartTracker[][]=新布尔值[numPortraitRows][numPortraitImagesPerRow];
如果(屏幕宽度>屏幕高度){
TableRow TableRow[]=新的TableRow[numLandscapeRows];
ImageView ImageView[]=新的ImageView[numlandscapeImagesError];
对于(i=0;i
我希望这很容易理解。我的Java非常基础,所以我不认为我可以编写非常复杂的代码。但是如果您有什么需要澄清的,请告诉我


谢谢您的时间。

它们看起来几乎完全相同

int maxRows = screenWidth > screenHeight ? numLandscapeRows : numPortraitRows;
int maxCols = screenWidth > screenHeight ? numPortraitImagesPerRow :  numPortraitImagesPerRow;

TableRow tableRow[] = new TableRow[numPortraitRows];
ImageView imageView[] = new ImageView[numPortraitImagesPerRow];

for (i = 0; i < maxRows ; i++) {
    for (j = 0; j < maxCols ; j++) {
        imageView[j].setOnClickListener(new OnClickListener(){
                public void onClick(View v) {
                    if (imageViewPortraitTracker[i-1][j-1]) {
                        v.setBackgroundResource(R.drawable.icon);
                    } else {
                        v.setBackgroundResource(R.drawable.launcher);
                    }
                    imageViewPortraitTracker[i-1][j-1] = imageViewPortraitTracker[i-1][j-1]
                 }
         });
    }
}
int maxRows=screenWidth>screenHeight?numLandscapeRows:numPortraitRows;
int maxCols=screenWidth>screenHeight?numPortRaiTimages箭头:numPortRaiTimages箭头;
TableRow TableRow[]=新的TableRow[numPortraitRows];
ImageView ImageView[]=新ImageView[NUMPORTRATIMAGESPERROW];
对于(i=0;i
它们看起来几乎相同

int maxRows = screenWidth > screenHeight ? numLandscapeRows : numPortraitRows;
int maxCols = screenWidth > screenHeight ? numPortraitImagesPerRow :  numPortraitImagesPerRow;

TableRow tableRow[] = new TableRow[numPortraitRows];
ImageView imageView[] = new ImageView[numPortraitImagesPerRow];

for (i = 0; i < maxRows ; i++) {
    for (j = 0; j < maxCols ; j++) {
        imageView[j].setOnClickListener(new OnClickListener(){
                public void onClick(View v) {
                    if (imageViewPortraitTracker[i-1][j-1]) {
                        v.setBackgroundResource(R.drawable.icon);
                    } else {
                        v.setBackgroundResource(R.drawable.launcher);
                    }
                    imageViewPortraitTracker[i-1][j-1] = imageViewPortraitTracker[i-1][j-1]
                 }
         });
    }
}
int maxRows=screenWidth>screenHeight?numLandscapeRows:numPortraitRows;
int maxCols=screenWidth>screenHeight?numPortRaiTimages箭头:numPortRaiTimages箭头;
TableRow TableRow[]=新的TableRow[numPortraitRows];
ImageView ImageView[]=新ImageView[NUMPORTRATIMAGESPERROW];
对于(i=0;i
似乎您可以只制作一个简单的函数来完成这项工作(这种语法不是100%正确,但您应该明白这一点):

reducedFunction(整数行、整数图像、布尔[][]跟踪器){
对于(i=0;i屏幕高度){
简化函数(numLandscapeRows、numLandscapeImagesPerRow、imageViewLandscapeTracker)
}
否则{
简化函数(numPortraitRows、numPortraitImagesPerRow、IMAGEVIEWRATIONTRACKER)
}

似乎您可以只制作一个简单的函数来完成这项工作(这种语法不是100%正确,但您应该明白这一点):

reducedFunction(整数行、整数图像、布尔[][]跟踪器){
对于(i=0;i