为什么在Java中必须初始化嵌套循环控制变量?
作者:互联网
我在官方java教程中写了一个简单的“在多维数组中查找数字”.这是教程中包含的代码:
class LabeledBreak {
public static void main(String[] args) {
int [][] numbers = {
{22, 34, 675, 23, 23},
{34, 76, 98, 23, 11},
{65, 234, 87, 23, 76}
};
int searchFor = 123;
boolean found = false;
int i;
int j = 0; // <-- this line
search:
for (i = 0; i < numbers.length; i++) {
for (j = 0; j < numbers[i].length; j++) {
if (searchFor == numbers[i][j]) {
found = true;
break search;
}
}
}
if (found == true)
System.out.println("Found " + searchFor + " at index " + i + ", " + j);
else
System.out.println(searchFor + " not found!!!");
}
我无法理解这里初始化“j”的重点是什么.我尝试删除初始化语句,并使其只是一个声明.但我得到了这个错误:
“变量j可能尚未初始化”
为什么我要初始化“j”?为什么没有“我”也需要初始化?
解决方法:
好吧,如果numbers.length为0,内部循环将永远不会运行,因此j永远不会被初始化,即你永远不会达到语句j = 0;.
标签:java,initialization,nested-loops 来源: https://codeday.me/bug/20190714/1455414.html