2013-09-21 125 views
-1

大家好,我的代码应该做到下面这条指令,但我没有得到它在所有Java输入和输出把

用户可以根据需要在控制台上输入的许多积极的浮点数。零(或一个负数)表示输入结束(不能输入更多数字)。输入后 显示 数最少的程序输入(分钟) 数量最多输入(最大值) 所有数字的平均值进入(平均) 不要用数组这个任务,即使你知道他们。

样品应该是这样的

输入号码:\ n输入 1 2 3 4 5 6 0 \ n 编号:6 \ n 最小:1.00 \ n 最大:6.00 \ n 平均值:3.50 \ n

输入数字:\ n 0 \ n 未输入数字。

public class LoopStatistics { 

public static void main(String[] args) { 

    double max, min, sum=0, input, mean=0; 
    int counter = 0; 

    TextIO.putln("enter numbers:"); 

    do 
    { 
     input = TextIO.getDouble(); 

     min = input; 
     max = input; 

     counter++; 

     if (input > max) 
      max = input; 

     if (input < min) 
      min = input; 

     sum = sum + input; 



     } while(input != 0); 
    mean = sum/counter; 
    TextIO.putf("numbers entered:%d\n", counter); 
    TextIO.putf("minimum:%f\n", min); 
    TextIO.putf("maximum:%f\n", max); 
    TextIO.putf("mean:%f", mean); 





} 

} 

回答

1

您将其分配maxmin你测试之前,他们是否比当前max/min大于/小于:

min = input; 
max = input; 

这意味着,他们都等于不管最后输入的人。

整理你的代码和删除这些调用率:

public static void main(String[] args) throws Exception { 
    final Scanner scanner = new Scanner(System.in); 
    double max = 0; 
    double min = Double.POSITIVE_INFINITY; 
    double sum = 0; 
    int counter = 0; 
    while (true) { 
     final double d = scanner.nextDouble(); 
     if (d <= 0) { 
      break; 
     } 
     sum += d; 
     max = Math.max(max, d); 
     min = Math.min(min, d); 
     ++counter; 
    } 
    System.out.println("Max=" + max); 
    System.out.println("Min=" + min); 
    System.out.println("Ave=" + sum/counter); 
} 
+0

你能不能给我的建议,使这项工作? –

+0

对不起,问题太多了,但Double.POSITIVE_INFINITY;做什么? –

+0

@迈克尔你认为它有什么作用?你有没有听说过这个谷歌的东西?你可以查看[javadocs](http://docs.oracle.com/javase/7/docs/api/java/lang/Double.html#POSITIVE_INFINITY)。 –