2013-04-06 53 views
0

我是新来的java.And,所以我正在练习一些问题。但我绊倒了这一点。我知道我非常接近正确的答案,我想把其他条件,如果它少它会打破。 尝试插入这里和那里,但它不能工作。打印平均数

编写一个名为printAverage的方法,该方法接受控制台的扫描仪作为参数并重复提示用户输入数字。一旦输入小于零的任何数字,将显示输入的所有非负数的平均值。以平均值显示平均值,并且不要四舍五入。例如,你的方法的调用可能是这样的:

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); 


} 

Sorry.The问题不是clear.For例如,当我在0 0 1 1类型 - 2作为numbers.I我应该得到

类型的数:0 类型的数:0 类型的数:1种 类型的数:1种 类型的数:-2 平均为0.5

但我正在逐渐

类型的数:0 类型的数:0 类型的数:1种 类型的数:1种 类型的数:-2 平均为1.0

+4

问题是什么? – NPE 2013-04-06 16:04:58

+0

尝试输入负数。但它只是不会停下来,并断开循环 – user2179615 2013-04-06 16:06:30

回答

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); 
} 
+0

你怎么知道先使用while循环?我总是困惑哪一个使用 – user2179615 2013-04-06 16:17:45

+0

“while”和“do while”之间的主要区别是什么?是'做什么'将被执行至少一次。 – niculare 2013-04-06 16:21:32

0

我想到把一个else条件的,如果它小于0.it 会中断。试图插入这里和那里,但它不能工作。

如果你把else与否并不重要,因为while(),被照顾突破了计算

,也因为else部分是最后陈述中环

0

要禁止印刷,如果第一个数字为负,只需要加一个ifSystem.out.println()各地:

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

此外,现有的if中存在一个错误,它应该是

  if(num>=0){ 
+0

为什么你在这里使用柜台?从我的理解,不应该是num? – user2179615 2013-04-06 16:15:25

+0

测试它。它不工作0 0 1 1 -2 – user2179615 2013-04-06 16:16:28

+0

@ user2179615:你忽略零。将if(num> 0)'更改为'if(num> = 0)'。 – NPE 2013-04-06 16:21:01