我需要对所有数字求sum = sum + i
,但我不知道为什么我没有得到预期的结果
所以任务是:使用while循环计算从1到1000的所有数字的总和,使其打印总和而不是中间值。
public static void main(String[] args)
{
int i = 1;
int sum = 0;
while (i <= 1000) {
sum = sum + i;
++i;
}
System.out.print(sum);
}
答案 0 :(得分:0)
如果要对给定范围内的数字求和,可以使用 高斯和公式。
以下是:
(n * (n + 1)) / 2
意思是:(RANGE *(MAX_VALUE + 1))/ 2解释见:
http://mathcentral.uregina.ca/QQ/database/QQ.02.06/jo1.html http://betterexplained.com/articles/techniques-for-adding-the-numbers-1-to-100/?PageSpeed=noscript
在你总结1到1000的情况下:(1000 * 1001)/ 2
如果您想要汇总例如500到1000,您可以将公式更改为:
(501 * 1500) / 2
您可以创建一个这样的方法:
import java.util.*;
import java.lang.*;
import java.io.*;
class Ideone
{
public static double sumRange(double begin, double end) {
return ((end - (begin-1)) * (end + begin) ) / 2;
}
public static void main (String[] args) throws java.lang.Exception
{
System.out.println(sumRange(1, 1000));
System.out.println(sumRange(500, 1000));
System.out.println(sumRange(20, 300));
}
}
工作示例:
输出:
成功时间:0.09记忆:320320信号:0 500500.0 375750.0 44960.0
要检查结果,您可以使用wolframalpha: https://www.wolframalpha.com/input/?i=sum_500%5E1000+n
答案 1 :(得分:0)
尝试将++i;
更改为i++;
。我使用了你的代码并进行了交换,它对我有用。之前或之后的++
至关重要,它决定了何时增加i
。
答案 2 :(得分:0)
public class Main
{
public static void main(String[] args)
{
int sum = 0,i = 1;
// Use a while loop to calculate the sum of 1 to 1000
while (i <= 1000)
{
sum+=i;
i++;
}
System.out.println(sum);
}
}