打印平均数

时间:2013-04-06 16:02:26

标签: java

我是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

3 个答案:

答案 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){