平均计算器[舍入问题]

时间:2016-03-09 00:05:50

标签: java

我被分配了一个创建平均计算器的任务,不幸的是,每次平均计算器完成时我会得到一个太多而没有解决问题的数字 - 或者,平均值完全关闭。< / p>

import java.util.*; 

public class Mean
{
    public static void main()
    {
        Scanner inputLine = new Scanner(System.in);
        int total = 0, number, counter = 0;
        double average;

        System.out.println ("Enter your numbers, press 0 to launch");


        while (inputLine.nextInt() != 0)
        {
            number = inputLine.nextInt();
            if(number >= 1)
            {
                total = total + number;
                counter++;
            }
        }


        average = total/counter-1;
        System.out.println ("Your Average is : " + average);

    }
}   

1 个答案:

答案 0 :(得分:4)

  1. 您正在阅读int每个循环两次Scannerwhile循环读取int以确保它不是0,但while循环的主体读取第二个int并且只计算第二个int
  2. 将第一个nextInt调用的结果分配给while循环条件中的变量,并在正文中使用该变量进行计算。

    1. 您从平均值计算中减去1。没有理由这样做。不要这样做。

    2. 您正在执行Java的整数除法,它将截断任何小数。将其中一个操作数强制转换为/double以强制进行浮点计算。

    3. while ( (number = inputLine.nextInt() ) != 0)
      {
          if(number >= 1)
          {
              total = total + number;
              counter++;
          }
      }
      average = (double) total / counter;
      

      您可能希望为用户未输入任何项目的条件添加代码,以防止除以0。