Java for 循环多维数组

问题描述 投票:0回答:1

您能否解释一下为什么对于

int i
我们不应该赋值 0,而对于
j
我们应该赋值?

当我们写

int j ;
而不写
= 0
时,会出现以下错误:

变量“j”可能尚未初始化

class BreakWithLabelDemo {
    public static void main(String[] args) {

        int[][] arrayOfInts = { 
            { 32, 87, 3, 589 },
            { 12, 1076, 2000, 8 },
            { 622, 127, 77, 955 }
        };
        int searchfor = 12;

        int i;
        int j = 0;
        boolean foundIt = false;

    search:
        for (i = 0; i < arrayOfInts.length; i++) {
            for (j = 0; j < arrayOfInts[i].length;
                 j++) {
                if (arrayOfInts[i][j] == searchfor) {
                    foundIt = true;
                    break search;
                }
            }
        }

        if (foundIt) {
            System.out.println("Found " + searchfor + " at " + i + ", " + j);
        } else {
            System.out.println(searchfor + " not in the array");
        }
    }
}

当我宣布

int i = 0 ;
时,这里的零发出灰色光,意味着它是多余的,并且
int j = 0 ;
,这里一切正常。

我们在各种 for 循环和

i
中几乎相同地使用
j
System.out.println
。 j 和 i 有什么区别。

java arrays for-loop if-statement multidimensional-array
1个回答
0
投票

这是因为当执行

break search
时,两个循环都会立即退出。如果您没有显式地为 j 指定一个值,则当程序到达
System.out.println
时,它没有有效值。 (编译器无法保证 if
break search;
语句在嵌套循环 j 的早期执行时曾被赋值。

如果您想了解更多信息,请查看 java 编译的工作原理 java 编译是如何进行的

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.