2012-06-04 141 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