我想理解,为什么当我指定方法的数字来总结它返回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;
}
}
答案 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));
或者将i
和j
的初始定义更改为:
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));