Java 为什么需要启动sum?

Java 为什么需要启动sum?,java,Java,为什么需要启动sum 当sum初始化为0或其他整数(如5)时,答案保持不变,为什么?因为如果args.length==0,则不会执行for循环。Java阻止您在没有赋值的情况下使用sum 如果您的for循环没有执行,那么您的代码实际上是: class CommandSum { public static void main(String[] args) { int a,b,c,i; int sum = 0 ; for( i = 0;

为什么需要启动sum

当sum初始化为0或其他整数(如5)时,答案保持不变,为什么?

因为如果args.length==0,则不会执行for循环。Java阻止您在没有赋值的情况下使用sum

如果您的for循环没有执行,那么您的代码实际上是:

class CommandSum
{
    public static void main(String[] args)
    {
        int a,b,c,i;
        int sum = 0 ;
        for( i = 0; i< args.length; i++)
        {
            a = Integer.parseInt(args[0]);
            b = Integer.parseInt(args[1]);
            c = Integer.parseInt(args[2]);
            sum = a+b+c;            
        }   
        System.out.println("Command Line Sum is " + sum);
    }
}
旁注:for循环当前未使用i循环变量。也许你的意思是:

public static void main(String[] args)
{
    int a,b,c,i;
    int sum; // assume you didn't assign anything

    // here sum would not be defined
    System.out.println("Command Line Sum is " + sum); 
}
//为什么需要启动sum

如果args.length为0,则不会执行for循环。 然后到达使用sum的最后一行,System.out.println命令行sum is+sum,sum将是未初始化的,这在Java中是不合法的

//当sum初始化为0或其他整数(如5)时,答案仍然存在 同样,为什么

大概是因为您正在使用args.length>=3的情况进行测试,所以到达这一行

for(String arg : args) {        
    sum += Integer.parseInt(arg);
}   

哪个给sum赋值

你能详细说明你的问题吗?问题是什么?因为编译器无法预测for循环是否一直在运行。我相信for循环体应该是sum+=Integer.parseIntargs[I]。我不确定您是否真的理解您的代码片段中发生的事情。试着只给你的程序两个参数,看看发生了什么。顺便说一句,你的for循环似乎没有用,如果你不传递至少三个整数参数,它会崩溃。好的,但当sum初始化为0或其他整数(如5)时,答案保持不变,为什么?@user3753652可能是因为你传递了三个参数。因此,行和=a+b+c;完全覆盖sum的上一个值。如果像我建议的那样重写for循环,然后将零参数传递给方法,您将看到初始化值确实会影响结果。
for(String arg : args) {        
    sum += Integer.parseInt(arg);
}   
sum = a+b+c;