我想编写一个程序,将所有0到100之间的数字相加,但是我的代码无法正确添加所有内容。如何在数字上添加下一个数字,然后打印总和?
这是我的代码:
for(int i = 0; i <= 100; i++){
i+=i;
println(i);
}
结果显示为0、2、6、14 ...,我需要从1到100的所有数字之和。
答案 0 :(得分:3)
得到这个奇怪结果的原因是,您将这些数字加到了i上,而不是拥有专用的收集器。
int collector = 0;
for (int i = 0; i <= 100; i++) {
collector += i;
println(collector);
}
如果只想打印一次总和,请将println(collector)表达式移到循环外。
还有一个数学公式可以直接计算前n个数字的总和
Sum(1, n) = n * (n+1) / 2
处理中:
int Sum(int n){
return n * (n + 1) / 2;
}
formula works是因为数字1到N可以像这样重新排列和添加:
(1 + N) + (2 + N-1) + (3 + N-2) + . . . . + (N + N/2+1) = total
对于N = 100:
(1 + 100) + (2 + 99) + (3 + 98) + . . . . + (50 + 51) = 5050
101 + 101 + 101 + . . . . + 101 = 5050