如何确定从用户输入中获取平均值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何确定从用户输入中获取平均值相关的知识,希望对你有一定的参考价值。

说明如下:

  • 写一个名为inputThenPrintSumAndAverage的方法,该方法没有任何参数。
  • 该方法不应返回任何内容(无效),它需要不断从键盘读取int数字。
  • [当用户输入的不是int字符时,它需要以“ SUM = XX AVG = YY”格式打印消息。 XX代表所有输入的int类型数字的总和。YY代表所有long类型数字的计算平均值。

我已经编码了以下方法,但是我一直得到不正确的平均值。我可以更改什么以获得正确的平均值?

public static void inputThenPrintSumAndAverage(){
        Scanner scanner = new Scanner(System.in);
        int sum = 0, counter = 0;
        long average = 0L;
        while(true)        {

            boolean number = scanner.hasNextInt();
            if(!number)
            {
                counter++;
                break;
            }
            else {
                int digit = scanner.nextInt();
                sum += digit;
                counter++;
            }
        }
        average = sum / counter;
        System.out.println("SUM = " + sum + " AVG = " + average);
    }
答案

以下应做:

        if(!number)
            break;

您的平均值是错误的,因为您要增加“计数器”的数量。

当然,最后,您将不得不再添加一个if语句,以确保如果计数器为零,则不会尝试除以counter。在这种情况下,平均值是不确定的。

[而且,正如其他人在评论中指出的那样,当您说“我一直在得到不正确的平均值”时,我们完全不清楚您的意思,而且我们通常对措词含糊不清。但是,如果任何“正确的平均值”表示您的平均值是带小数的平均值,则应使用double而不是long作为平均值,并且应在除以之前将counter强制转换为double ,以强制执行double除法而不是long除法。

另一答案

使用scanner.hasNextInt()读取util作为输入提供了非整数值:

public static void inputThenPrintSumAndAverage() {
  Scanner scanner = new Scanner(System.in);
  int number, sum = 0, counter = 0;
  long average = 0L;
  while (scanner.hasNextInt()) {
     number = scanner.nextInt();
     sum += number;
     counter++;
  }
  average = sum / counter;
  System.out.println("SUM = " + sum + " AVG = " + average);
}

以上是关于如何确定从用户输入中获取平均值的主要内容,如果未能解决你的问题,请参考以下文章

从viewPager片段(Kotlin)中获取用户输入信息

从片段中获取输入数据

在while循环中从用户输入中获取最小值

如何从 HealthKit 中获取每日平均步数

在 android dumpsys 中获取当前可见片段的信息

如何从 URL 获取片段标识符(哈希 # 后的值)?