2017-04-17 37 views
-2

我需要創建一個程序來計算用戶輸入的測試分數的平均值。這實際上是我第二次有任務要求製作這個節目。但是這一次,當用戶輸入一個小於0或大於100的測試核心時,該任務要求我拋出一個IllgalArgumentException。問題是即使測試分數介於0-100之間時,無論測試分數如何,該程序都會以IllegalArgumentException 。不知道我在這裏做錯了任何想法預期的輸出沒有例外爲什麼我得到每個輸入IllegalArgumentException?

預計輸出

Enter number of test scores:5 
Enter test score 1:70 
Enter test score 2:65 
Enter test score 3:94 
Enter test score 4:55 
Enter test score 5:90 
74.8 

和我的代碼

public static void main(String[] args) throws IllegalArgumentException 
{ 
    Scanner input = new Scanner (System.in); 
    int numTests = 0; 
    int [] grade = new int [numTests]; 
    double average; 
    double totalGrades = 0; 

    System.out.print("Enter number of test scores:"); 
    numTests = input.nextInt(); 
    grade = new int[numTests]; 

    for (int index = 0; index < grade.length; index++) 
    { 
     System.out.print("Enter test score " + (index + 1) + ":"); 
     grade[index] = input.nextInt(); 


      if(grade[index] < 0 || grade[index] > 100); 
      { 
       throw new IllegalArgumentException(); 

      }   
    } 

    for (int i = 0; i < grade.length; i++) 
    { 
     totalGrades += grade[i]; 
    } 

    average = totalGrades/grade.length; 

    System.out.println(average); 

} 

private static class IllegalArgumentException extends Exception 
{ 
    public IllegalArgumentException() 
    { 
     super("Test scores must have a value less than 100 and greater than 0."); 
    } 

    public IllegalArgumentException(int value) 
    { 
     super("Invalid Test Score: " + value); 
    } 
} 
+1

爲什麼你要聲明一個新類'IllegalArgumentException'?爲什麼不使用'java.lang.IllegalArgumentException',提供你想要的參數作爲參數? –

+0

@AndyTurner我原本沒有第二次,但它是顯示錯誤消息作爲循環的一部分,所以錯誤消息出現了5次,程序沒有崩潰 –

回答

5
if(grade[index] < 0 || grade[index] > 100); 
{ 
    throw new IllegalArgumentException(); 
} 

;上的結束if行表示無條件執行throw,因爲它不在條件塊中。

你的代碼是(有效)一樣:

if(grade[index] < 0 || grade[index] > 100) { /* do nothing */ } 
throw new IllegalArgumentException(); 

取出;

相關問題