方法中的for循环导致错误的结果

时间:2012-03-16 00:48:11

标签: java

我想理解,为什么当我指定方法的数字来总结它返回21的数字时,但是当我通过扫描仪输入值时,它给出了正确的值。例如,数字3应该是1 + 2 + 3 = 6但它给我21,任何想法谢谢。

public class sumInt
{

    public static void main(String[] args)
    {
        int i  = sumInt(3);
        int j  = sumInt(10);

        Scanner in = new Scanner (System.in);
        System.out.println("Please enter posiutive integer: ");
        int k = in.nextInt();

        System.out.println(sumInt(i));
        System.out.println(sumInt(j));
        System.out.println(sumInt(k));  
    }

    public static int sumInt(int n)
    {
        int sum = 0;
        for (int i = 0; i <= n; i++)
        {
            sum += i;

        }
        return sum;
    }
}

7 个答案:

答案 0 :(得分:3)

您实际上总计为i的6,您当前的代码也可以写成:

System.out.println(sumInt(sumInt(3)));

您需要直接打印i,而不是再次打电话给sumInt

答案 1 :(得分:3)

当您第一次int i = sumInt(3);时,i设置为6(1 + 2 + 3)。当您System.out.println(sumInt(i))时,它会sumInt(6),即21,因为您尚未将i重置为3。

要查看实际结果,您应该将输出内容更改为:

System.out.println(i);
System.out.println(j);
System.out.println(sumInt(k)); 

或者将ij的初始定义更改为:

int i = 3;
int j = 10;

答案 2 :(得分:0)

这是因为你在两个地方打电话给sumInt,而你只打算把它叫到一个地方:

int i = sumInt(3); // sets i = sumInt(3) == 6
System.out.println(sumInt(i)); // prints sumInt(i) == sumInt(6) == 21

答案 3 :(得分:0)

因为你打电话给sumInt()两次;一次在开头,然后再在打印陈述中。

答案 4 :(得分:0)

你说i = sumInt(3)所以我= = 6。

然后你的打印sumInt(i)== sumInt(6),我猜是21 ..

答案 5 :(得分:0)

你为同一个号召唤两次sumInt。

int i  = sumInt(3); //i gets 6


System.out.println(sumInt(i)); //called with 6 =21

答案 6 :(得分:0)

这是因为以下几行

System.out.println(sumInt(i));
System.out.println(sumInt(j));
System.out.println(sumInt(k));  

您已经计算了i和j作为所需整数的总和,当您打印输出时,您再次计算i和j的总和

将以上三行更改为以下内容:

System.out.println(i);
System.out.println(j);
System.out.println(sumInt(k));