2014-10-11 127 views
0

我想創建一個程序,可以輸入數字和等級,並且計算機只會計算通過的平均值,但是如果分子或者是否爲零,會發生什麼?我該如何解決這個問題?計算Java等級的平均值

public class Grades { 

    public static void main (String[] args) { 
     double grade1, grade2, grade3, avg, sum=0; 
     int counter = 0; 
     Scanner input = new Scanner(System.in); 
     System.out.println("Enter your first Grade"); 
     grade1 = input.nextDouble(); 
     if (grade1 >= 90) 
     { 
      System.out.println("excellent"); 
      counter++; 
      sum += grade1; 
     } 
     else if (grade1 < 90 && grade1 >= 70) 
     { 
      System.out.println("very good"); 
      counter++; 
      sum += grade1; 
     } 
     else if (grade1 < 70 && grade1 >= 60) 
     { 
      System.out.println("fair"); 
      counter++; 
      sum += grade1; 
     } 
     else if (grade1 < 60) 
     { 
      System.out.println("you fail"); 
     } 
     System.out.println("Enter your second Grade"); 
     grade2 = input.nextDouble(); 
     if (grade2 >= 90) 
     { 
      System.out.println("excellent"); 
      counter++; 
      sum += grade2; 
     } 
     else if (grade2 < 90 && grade2 >= 70) 
     { 
      System.out.println("very good"); 
      counter++; 
      sum += grade2; 
     } 
     else if (grade2 < 70 && grade2 >= 60) 
     { 
      System.out.println("fair"); 
      counter++; 
      sum += grade2; 
     } 
     else if (grade2 < 60) 
      System.out.println("you fail"); 
     System.out.println("Enter your third Grade"); 
     grade3 = input.nextDouble(); 
     if (grade3 >= 90) 
     { 
      System.out.println("excellent"); 
      counter++; 
      sum += grade3; 
     } 
     else if (grade3 < 90 && grade3 >= 70) 
     { 
      System.out.println("very good"); 
      counter++; 
      sum += grade3; 
     } 
     else if (grade3 < 70 && grade3 >= 60) 
     { 
      System.out.println("fair"); 
      counter++; 
      sum += grade3; 
     } 
     else if (grade3 < 60) 
      System.out.println("you fail"); 
     avg=sum/counter; 
     System.out.println("your average is : "+avg); 


    } 
} 
+0

這是一個很大的代碼...問題是什麼? – Mureinik 2014-10-11 12:43:32

+0

「但是如果分子或者dinounator是零將會發生什麼事情」 - 由您決定將會發生什麼。 – Eran 2014-10-11 12:43:59

+0

在劃分之前檢查分子/分母。這取決於你在找到零除數時會發生什麼。我會假設你只給1個分數加1,並且每個分數都會平均下來...... – Mike 2014-10-11 12:47:40

回答

1

對於這種類型的,我們使用異常處理,但如果你是一個初學者ü可以通過應用如果條件檢查的天氣NUM或分母解決它的東西是零

else if (grade3 < 60) 
    System.out.println("you fail"); 
if(sum == 0 || counter == 0) { 
    System.out.println("Invalid sum or total count"); 
} else { 
    avg = sum/counter; 
} 
System.out.println("your average is : " + avg); 
0

我不完全相信,我明白你的問題,但是當我運行代碼,我發現,如果任sumcounter爲0的結果是NaN

在Java中,NaN代表「不是數字」。發生這種情況是因爲您嘗試執行實際上無法執行的浮點操作(或者會給出無益的答案)。比如用0除。

就像我之前說過的,我並不完全相信我理解你的問題,但避免這種情況的最好方法是檢查以確保sumcounter的值在執行之前都爲非零值計算。

因此,而不是:

avg=sum/counter; 

你可以嘗試:

if(sum > 0 && counter > 0) avg = sum/counter; 

事實上,有很多方法可以檢查這個,但是這僅僅是一個會確保你得到一個有用的價值返回給你。另一種方法是在用戶輸入過程中檢查這一點,但在我確定知道你在問什麼之前,我不會進入這個過程。