编程语言
首页 > 编程语言> > 为什么在Java中必须初始化嵌套循环控制变量?

为什么在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