我是java的新手。所以我正在练习一些问题。但是我偶然发现了这个问题。我知道我非常接近正确的答案而且我正在考虑设置一个其他条件,如果它小于0。它会破裂。 尝试在这里和那里插入它但它无法工作。
编写一个名为printAverage的方法,该方法接受控制台的Scanner作为参数,并反复提示用户输入数字。输入任何小于零的数字后,将显示键入的所有非负数的平均值。将平均值显示为double,不要将其舍入。例如,对方法的调用可能如下所示:
Scanner console = new Scanner(System.in);
printAverage(console);
The following is one example log of execution for your method:
Type a number: 7
Type a number: 4
Type a number: 16
Type a number: -4
Average was 9.0
If the first number typed is negative, do not print an average.
我的尝试:
public static void printAverage(Scanner console){
int num=0;
double sum=0;
double avg=0;
int counter=0;
while(num>=0){
System.out.print("Type a number: ");
num=console.nextInt();
if(num>0){
sum+=num;
counter++;
avg=sum/counter;
}
}
System.out.println("Average was " + avg);
}
抱歉。问题不明确。例如,当我输入0 0 1 1 -2作为数字时。我应该得到
输入数字:0 输入一个数字:0 输入一个数字:1 输入一个数字:1 输入一个数字:-2 平均值为0.5
但我得到了
输入数字:0 输入一个数字:0 输入一个数字:1 输入一个数字:1 输入一个数字:-2 平均值为1.0
答案 0 :(得分:0)
试试这个:
do {
System.out.print("Type a number: ");
num=console.nextInt();
if (num >= 0) {
sum+=num;
counter++;
}
} while (num >= 0);
if (counter > 0) {
avg = sum / counter;
System.out.println("Average was " + avg);
}
答案 1 :(得分:0)
我正在考虑将其他条件设置为小于0.it 会打破。尝试在这里和那里插入它但它无法工作。
如果你放else
或不重要,因为while()
正在处理计算中的错误
并且因为else
部分是循环中的最后一个语句
答案 2 :(得分:0)
如果第一个数字为负数,要取消打印,只需在if
周围添加System.out.println()
:
if (counter > 0) {
System.out.println("Average was " + avg);
}
此外,现有if
中存在一个错误,该错误应为
if(num>=0){