如何在while循环中创建一个数字总和然后打印结果?

时间:2015-04-24 12:50:24

标签: java while-loop numbers sum

我需要对所有数字求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);
}

3 个答案:

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

工作示例:

http://ideone.com/G7wgjQ

输出:

成功时间: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);
	}
}