2016-12-14 127 views
0

我正在構建一個從文本文件中計算學生成績的類。所使用的方法和領域必須與其寫作完全相同,因爲這是一個學校項目,如果沒有完全按照自己的意願書寫,我的老師將得到分數。無論如何,根據她的標準,她希望我創建一種方法來計算數組的平均值,然後用另一種方法檢索平均值(似乎有點多餘,但就像我說的,這正是她想要的)。我構建了這個方法,並且在我的getAverage(int studentNum)方法中引用它,但是當我編譯它時,它給了我一個「.class missing」錯誤。我不確定爲什麼要誠實。日食提供的解決方案並不是我想要做的,因爲他們建議我改變方法的參數,或創建一個全新的方法,這兩者都不是我的老師想要的。這裏就是我的工作:如何從我的Java類中的另一個方法調用我的方法?

public class GradeBook 
{ 
    private final int NUM_STUDENT = 5; 
    private final int NUM_TESTS = 4; 
    private String[] names = new String[5]; 
    private char[] grades = new char[5]; 
    private double[] scores1 = new double[4]; 
    private double[] scores2 = new double[4]; 
    private double[] scores3 = new double[4]; 
    private double[] scores4 = new double[4]; 
    private double[] scores5 = new double[4]; 

    public void setName(int studentNum, String name) 
    { 
     names[studentNum - 1] = name; 
    } 

    public void setScores(int studentNum, double[] scores) 
    { 
     if (studentNum == 1) 
     { 
      copyArray(scores1, scores); 
     } 

     else if (studentNum == 2) 
     { 
      copyArray(scores2, scores); 
     } 

     else if (studentNum == 3) 
     { 
      copyArray(scores3, scores); 
     } 

     else if (studentNum == 4) 
     { 
      copyArray(scores4, scores); 
     } 

     else 
     { 
      copyArray(scores5, scores); 
     } 
    } 

    public String getName(int studentNum) 
    { 
     return names[studentNum - 1]; 
    } 

    public double getAverage(int studentNum) 
    { 
     double average; 

     if (studentNum == 1) 
     { 
      average = calcAverage(scores1[]); 

      return average; 
     } 

     else if (studentNum == 2) 
     { 
      return calcAverage(scores2[]); 
     } 

     else if (studentNum == 3) 
     { 
      return calcAverage(scores3[]); 
     } 

     else if (studentNum == 4) 
     { 
      return calcAverage(scores4[]); 
     } 

     else 
     { 
      return calcAverage(scores5[]); 
     } 
    } 

    public char getLetterGrade(int studentNum) 
    { 
     return grades[studentNum - 1]; 
    } 

    public void copyArray(double[] to, double[] from) 
    { 
     for (int i = 0 ; i < from.length ; i++) 
     { 
      from[i] = to[i]; 
     } 
    } 

    public double calcAverage(double[] scores) 
    { 
     double sum = 0; 
     double average; 

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

     average = sum/scores.length; 

     return average; 
    } 

    public void assignGrade(int studentNum) 
    { 
      grades[studentNum - 1] = determineGrade(getAverage(studentNum)); 
    } 

    public char determineGrade(double average) 
    { 
     if (average <= 100 && average >= 90) 
     { 
      return 'A'; 
     } 

     else if (average <= 89 && average >= 80) 
     { 
      return 'B'; 
     } 

     else if (average <= 79 && average >= 70) 
     { 
      return 'C'; 
     } 

     else if (average <= 69 && average >= 60) 
     { 
      return 'D'; 
     } 

     else 
     { 
      return 'F'; 
     } 
    } 
} 

我敢肯定這件事情非常容易,我失蹤了,我只是沒有看到它。你們有什麼感想?

+0

而且正如我張貼此,我知道像一個白癡,我把旁邊的[]到數組名稱。猜猜那就解決了。 –

+0

相信我,這就是編程的工作原理。你永遠盯着某個東西,然後其他人走過來,在幾秒鐘內看到問題,或者你走開,當你回到問題時,你立即看到了什麼是錯的。 – nicomp

+0

是的。在你發佈之後,你永遠只會看到錯誤**,從來沒有。 – rossum

回答

3

降[]在你的方法參數:

average = calcAverage(scores1[]); 

應該

average = calcAverage(scores1); 
相關問題