我对Java程序有些困惑.
用户可以输入所需数量的值,然后键入“ 999”以获取他们输入的所有值的总和和平均值.
除了输入“ 999”外,所有其他工作都有效.
输入时确实会显示总和和平均值,但总和和平均值计算中还会包括“ 999”值.
我很好奇是否有办法从计算中排除此特定值,而仅使用它退出循环并显示总和和平均输出.
到目前为止,这是我的代码:
import java.util.Scanner;
public class SumAvg {
static Scanner reader = new Scanner(System.in);
public static void main(String[] args) {
int sum = 0, newNumber = 0, amount = 0;
double average;
System.out.println("Enter a number: ");
do {
amount++;
newNumber = reader.nextInt();
sum = sum + newNumber;
} while (newNumber != 999);
average = (sum / amount) * 1.0;
System.out.printf("Sum: %s %nAverage: %.2f",sum,average);
}
}
解决方法:
输入有效数字前,请勿增加金额.除非您有一个有效的数字,否则不要求和.除法前强制转换为两倍,否则为整数除法.
int sum = 0, amount = 0, newNumber;
System.out.println("Enter numbers. Enter 999 to stop:");
while ((newNumber = reader.nextInt()) != 999) {
sum += newNumber;
amount++;
}
double average = (double)sum / amount;
NumberFormat numfmt = NumberFormat.getInstance();
numfmt.setMinimumFractionDigits(0);
numfmt.setMaximumFractionDigits(9);
numfmt.setGroupingUsed(true);
System.out.println("Sum: " + numfmt.format(sum));
System.out.println("Average: " + numfmt.format(average));