0

我是java新手。所以我正在练习一些问题。但我偶然发现了这个。我知道我非常接近正确的答案,我正在考虑设置一个其他条件,如果它小于0.it会打破. 尝试在这里和那里插入它,但它无法正常工作。

编写一个名为 printAverage 的方法,该方法接受控制台的 Scanner 作为参数,并反复提示用户输入数字。一旦键入任何小于零的数字,就会显示所有键入的非负数的平均值。将平均值显示为双精度数,不要四舍五入。例如,对您的方法的调用可能如下所示:

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

4

3 回答 3

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);
}
于 2013-04-06T16:09:02.597 回答
0

我正在考虑设置一个 else 条件,如果它小于 0.it 就会中断。尝试在这里和那里插入它,但它无法正常工作。

如果你把else或不放都无关紧要,因为while(), 正在处理打破计算

也因为else部分是循环中的最后一条语句

于 2013-04-06T16:09:20.660 回答
0

如果第一个数字是负数,要禁止打印,只需在if周围添加一个System.out.println()

if (counter > 0) {
    System.out.println("Average was " +  avg);
}

另外,现有的 有一个错误if,应该是

            if(num>=0){
于 2013-04-06T16:11:18.513 回答