为什么需要启动金额?

时间:2014-06-19 08:27:55

标签: java

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);
    }
}

为什么需要启动金额?

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

2 个答案:

答案 0 :(得分:11)

因为如果args.length == 0,你的for循环不会执行。 Java阻止您使用sum而不为其分配值。

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

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); 
}

旁注:你的for循环当前没有使用i循环变量。也许你的意思是:

for(i = 0; i < args.length; i++) {        
    sum += Integer.parseInt(args[i]);
}   

或简单地说:

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

答案 1 :(得分:2)

  

//为什么需要启动总和?

如果args.length为0,则不执行for循环。 然后,您到达使用sumSystem.out.println("Command Line Sum is " + sum);的最后一行,而sum将未初始化,这在Java中是不合法的。

  

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

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

sum = a+b+c;

sum

分配新值