查找数字的平均值(使用while循环; java)

1 java user-input while-loop

当用户输入-1(就像它应该)但我的代码停止但是打印的平均值是错误的.

这就是我所拥有的:

import static java.lang.System.*;
import java.util.Scanner;
import java.util.*;

class averages_1
{
    public static void main(String[] args)   
    {
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter the scores:");
        double score = 0;
        double num = 0;
        double sum = 0;

    while (score != -1)
    {
        score = scan.nextDouble();
        sum += score;
        num++;
    }
    System.out.println("The average is:" + (sum/num));
}

}
Run Code Online (Sandbox Code Playgroud)

如果输入50然后输入105然后输出-1,则输出为

Enter the scores:

50

105

-1

The average is: 51.333333333333336
Run Code Online (Sandbox Code Playgroud)

我只需要纠正平均值.任何帮助表示赞赏!

Era*_*ran 7

您在平均值中包含-1.

避免它的一种方法是添加另一个条件:

while (score != -1)
{
    score = scan.nextDouble();
    if (score != -1) {
        sum += score;
        num++;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,更优雅的解决方案是在循环之前读取第一个输入,并且只添加有效输入:

score = scan.nextDouble();
while (score != -1)
{
    sum += score;
    num++;
    score = scan.nextDouble();
}
Run Code Online (Sandbox Code Playgroud)

通常,更改while循环条件中使用的变量应该是您在迭代中执行的最后一项操作.


naf*_*fas 5

你可以在你的条件下读取输入while loop,这样一旦你读到-1你就退出循环,它就不会被添加到你的sum变量中

while ((score=scan.nextDouble()) != -1)
{
    sum += score;
    num++;
}
Run Code Online (Sandbox Code Playgroud)