【问题标题】:for some reason, when i compile and try to run the program, the sum doesn't add up right出于某种原因,当我编译并尝试运行程序时,总和不正确
【发布时间】:2014-10-22 20:34:25
【问题描述】:
public static void main (String[] args) {
    double sum = 0;
    int count = 0;
    double userEnterNumber = 0;
    double min = 0;
    double max = 0;
    double average = 0;
    System.out.println(" Input a number, type a non-numerical value to exit: ");
    Scanner in = new Scanner(System.in);
    userEnterNumber = in.nextDouble();

    while ( in.hasNextDouble())
    { 
        userEnterNumber = in.nextDouble();
        if (userEnterNumber>0) {
            sum = sum + userEnterNumber;
            count ++; 
            average = sum/count;
            if (userEnterNumber >=max){
                max = userEnterNumber;
            }
        }
    }
    System.out.println(" Sum: "+sum);
    System.out.println(" Count: "+count);
    System.out.println(" Average: "+average);
    System.out.println(" Minimun: "+min);
    System.out.println(" Maximum: "+max);
}

我试图弄清楚我的程序发生了什么。每当我运行它时,它都会给我错误的总和和错误的计数。我该如何解决?我怎样才能在这里添加最小值?谢谢

【问题讨论】:

  • 您正在跳过初始值。首先你进入 in.nextDouble(),然后你说 while (in.hasNextDouble()),再次进入 in.nextDouble() - 所以第一个永远不会被记录为总和的一部分。
  • 您正在丢弃第一个in.nextDouble(),因为您立即在循环中再次调用它。

标签: java max average min


【解决方案1】:

通读您的程序。你打电话给这个两次: userEnterNumber = in.nextDouble(); 在您的第一个统计数据计算发生之前。

实际上,这意味着您输入的第一个 Double 被跳过。现在输出的数字有意义吗?

以后,请尝试在调试器中运行您的程序,并确定每个变量在每个步骤中是否包含正确/预期的值。

【讨论】:

  • 谢谢。我删除了第一个 in.nextDouble();它工作正常
猜你喜欢
  • 1970-01-01
  • 2016-12-08
  • 1970-01-01
  • 1970-01-01
  • 2021-04-05
  • 2019-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多