繁体   English   中英

找不到问题是什么? 错误:变量 ar 可能尚未初始化。 for(int x:a)System.out.println(x);

[英]Can't find what is the problem ? error: variable ar might not have been initialized . for(int x:a)System.out.println(x);

当 if(flag==2) 替换为 if(true) 或 if 语句被删除时没有错误。

class test{
    public static void main(String...arg) {
        int[] ar,b={1,2,3,4,5,6};
        int flag=2;
        if(flag == 2) ar = b; // no error when if(flag==2) is replaced by if(true).
        for(int x : ar) {
            System.out.println(x);
        }
    }
}

因为静态代码分析不会查看额外的代码块内部,所以可以分析if(true)以消除该块。 b毫无意义。 flag毫无意义。 消除它们,问题就会消失。

int[] ar = {1,2,3,4,5,6};
for (int x : ar) {
    System.out.println(x);
}

if 构造即if(flag == 2)不能保证运行,因为它可能是 flag!=2 ,因此数组ar uninitialized 当你用if (true){ }替换 if 条件时,就看不到编译器错误。 所以你需要用 null 初始化 Array 以便你可以逃避错误,但你将面临NullPointerException

    int[] ar = null,b = {1,2,3,4,5,6};
    int flag= 2;
    if (flag == 2) ar = b; 
    for(int x:ar) System.out.println(x);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM