2012-06-04 146 views
0

我正在编写一个程序来计算用户输入的平均值。用户输入计算平均值

import java.util.Scanner; 
public class mean 
{ 
    static Scanner input = new Scanner (System.in); 
    public static void main (String[] args) 
    { 
    double i; 
    double sum = 0; 
    int count = 0; 
    do 
    { 
     System.out.println("input"); 
     i = input.nextDouble(); 
     sum = sum + i; 
     count++; 
    }while (i != 0); 
    System.out.println("sum is " + sum + " count is " + (count - 1)); 
    System.out.println("average is " + sum/(count - 1)); 
} 
} 

这里如果我输入0,它会计算。但是如果列表中有0。有人可以指导我一个很好的条件?

回答

2

您可以询问扫描仪扫描仪正在读取的下一个标记是否为双倍,如果不是则为中断。实施例下面:

import java.util.Scanner; 
public class mean 
{ 
    static Scanner input = new Scanner (System.in); 
    public static void main (String[] args) 
    { 
    double i; 
    double sum = 0; 
    int count = 0; 
    while(input.hasNextDouble()) 
    { 
     System.out.println("input"); 
     i = input.nextDouble(); 
     sum = sum + i; 
     count++; 
    } 
    System.out.println("sum is " + sum + " count is " + (count)); 
    System.out.println("average is " + sum/(count)); 
} 
} 

如果用户输入一个非数字字符(例如,不“+”,“ - ”,0-9,等“”),环路将打破因为input.hasNextDouble()将返回假。

+1

的最佳解决方案,但有一个在原来代码中的问题,您应该划分数不算-1,因为计数开始于0。 – LINEMAN78

0

,而不是sum = sum + i一个更简单的方法是sum += i