Java数字总和错误

时间:2014-09-18 19:29:56

标签: java

此代码似乎运行良好,但是收到有关计算输入的整数之和的错误消息。

练习的要点是输入一系列数字,输入值-1后,计算数字的总和,输入的数字,平均值以及奇数和偶数的数量

我得到的输出表明程序运行正常,但仍然收到一条错误消息。

输入1 17 2 18 17 -1时应打印"sum: 55" expected:<55> but was: <0>

如果我的Java语法有点不优,请提前道歉。我对此很新!代码如下。

import java.util.Scanner;

public class LoopsEndingRemembering {

    public static void main(String[] args) {

        Scanner reader = new Scanner(System.in);

        System.out.print("Type numbers: ");
        int n;
        double sum = 0.0;
        int i = 0;
        double average = 0.0;
        int odd = 0;
        int even = 0;

        while (true) {
            n = Integer.parseInt(reader.nextLine());

            if (n != -1) {
                System.out.print("Type numbers: ");
                sum += n;
                i++;
                average = sum / i;
                if (n % 2 == 0) {
                    even++;
                } else {
                    odd++;
                }

            } else {
                System.out.println("Thank you and see you later!");
                System.out.println("The sum is " + sum);
                System.out.println("How many numbers: " + i);
                System.out.println("Average: " + average);
                System.out.println("Even numbers: " + even);
                System.out.println("Odd numbers: " + odd);
                break;
            }
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您正在打印55.0。您似乎正在通过另一个您无法访问其源代码的程序对此程序进行测试。

第1期

您可能希望专门打印55

而不是:

double sum = 0.0;

执行:

int sum = 0;

第2期

使用int而不是double。转换为double以获取average值。

然后代替:

average = sum / i;

做类似的事情:

average = (double)sum / i;

第3期

此外,似乎错误消息要求您打印为sum: 55

所以改变这个:

System.out.println("The sum is " + sum);

要:

System.out.println("sum: " + sum);