2016-07-05 40 views
-1

請耐心等待我對此非常陌生。我會通過一些教程和我收到此錯誤'非法開始表達'但主要在外

GradeAnalyzer.java:51: error: illegal start of expression 
myAnalyzer.getAverage(ArrayList<Integer>); 

我發現這麼多線程說拿法外爲主,但除非我真的很愚蠢的我敢肯定我的是主外已經。所有關於此事的建議都是值得歡迎的(也可以隨意批評我的其他代碼)。 import java.util.ArrayList;

public class GradeAnalyzer { 

    public GradeAnalyzer() { 

    } 

    public int getAverage(ArrayList<Integer> grades) { 

     ; 
     if (grades.size() < 1) { 

      System.out.println("Unfortunately the Array you are using is empty"); 

      return 0; 

     } else { 

      int sum = 0; 

      for (Integer grade: grades) { 
       System.out.println(grade); 

       sum = sum + grade; 
      } 

      int average = sum/grades.size(); 
      System.out.println("Average =" + average); 

      return average; 
     } 
    } 

    public static void main(String[] args) { 

     ArrayList<Integer> myClassroom = new ArrayList<Integer>(); 
     myClassroom.add(98); 
     myClassroom.add(92); 
     myClassroom.add(88); 
     myClassroom.add(75); 
     myClassroom.add(61); 
     myClassroom.add(89); 
     myClassroom.add(95); 

    } 

    public int myAnalyzer(ArrayList<Integer> myClassroom) { 

     GradeAnalyzer myAnalyzer = new GradeAnalyzer(); 

     myAnalyzer.getAverage(ArrayList<Integer>); 
    } 
} 
+0

第1步將格式化代碼合理,一致的縮進。 *(編輯:我已經在這個場合修復了它。)* –

+0

getAverage聲明後擺脫冒號。由於你是新手,所以有兩個提示:1)正確地格式化你的代碼; 2)不要聲明'ArrayList'類型的變量,使用'List'(即'List myList = new ArrayList <>();'。 – dabadaba

+0

縮進注意到並感謝您爲我編輯它,這是我從中學習的網站可能讓我使用壞習慣,而不是教會更簡潔的方式。 – raea29

回答

2
myAnalyzer.getAverage(ArrayList<Integer>); 

不是一個有效的方法調用。您應該通過一個類型爲ArrayList<Integer>的實例。

例如,如果您從main調用它,你可以這樣寫:

myAnalyzer.getAverage(myClassroom); 

或者,如果你不想把這個方法在你main,移動myClassroomArrayList聲明和初始化myAnalyzer方法。

+0

感謝您的反饋意見,希望我可以避免在這個網站的幫助下不良習慣 – raea29

3

這是罪魁禍首:

myAnalyzer.getAverage(ArrayList<Integer>); 

您提供了其中一個表達預期。你可能想在myClassroom參數來傳遞:

myAnalyzer.getAverage(myClassroom); 

其他說明:

  • 你可能想要得到在getAverage頂部以及擺脫流浪;的。我不認爲這是一個語法錯誤,但它是毫無意義的。

  • 我在任何地方都看不到致電myAnalyzer(該方法)。

  • myAnalyzer是一種非常奇怪的方法名稱。

  • 最好不要在同名(myAnalyzer)(儘管有效)的方法內聲明局部變量(myAnalyzer)。

  • 在一般情況下,儘量保持變量類型接口而不是具體的類型,所以:

    List<Integer> myClassroom = new ArrayList<Integer>(); 
    

    ...而不是在變量聲明使用ArrayList<Integer>

  • 如果使用ArrayList(這畢竟是分配和維護數組),在可能的情況下告訴它使用的初始容量,以確保在添加內容時不會進行不必要的數組重新分配。

  • sum += grade;是寫作sum = sum + grade;(儘管後者的作品)的慣用方式。

+0

感謝您的反饋我正在使用的網站列出了場景,包括方法名稱等。列表和Sum + =特別有用並且很有用。 – raea29