如何确定从用户输入中获取平均值
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);
}
以上是关于如何确定从用户输入中获取平均值的主要内容,如果未能解决你的问题,请参考以下文章