2015-02-09 89 views
-1

爲什麼在這裏:arrayList = {firstName,lastName,ID,examValue,score};給出錯誤?該方法應該調用一個構造函數,它是Exam(String firstName,String lastName,int ID,String examType,int score),那麼這個方法有什麼問題?提前致謝!爲什麼數組給出錯誤?

public static Exam[] readAllExams(Scanner s) 
    { 
     Exam[] arrayList = null; 
     String firstName = ""; 
     String lastName = ""; 
     int ID = 0; 
     String examValue = ""; 
     int score = 0; 

     while(s.hasNext()) 
     { 
      if(s.hasNextLine()) 
      { 
       firstName = s.next(); 
       lastName = s.next(); 
      } 
      else if(s.hasNextInt()) 
      { 
       ID = s.nextInt(); 
      } 
      else if (s.hasNextLine()) 
      { 
       examValue = s.nextLine(); 
      } 
      else if (s.hasNextInt()) 
      { 
       score = s.nextInt(); 
      } 

     } 

     arrayList = {firstName, lastName, ID, examValue, score}; 
     return arrayList; 


    } 
+1

你不能初始化數組聲明後的方式。請參閱http://stackoverflow.com/questions/5387643/array-initialization-syntax-when-not-in-a-declaration – Mints97 2015-02-09 18:36:50

回答

0

首先,你不能初始化一個數組作爲Exam[] arrayList = null;,然後重新分配給長度爲5

的陣列值其次,您的ArrayList是不同的對象和原語(Stringint)的列表,並且與指定的類型Exam[]不匹配。

要麼更改分配給Exam列表的對象的類型,要麼確保列表中的所有對象都是Exam類型。

+0

所有對象如何能成爲Exam類型的?請提供所有類型考試對象的例子嗎? @rageandqq – jordan 2015-02-09 20:05:02

+0

您必須確保列表中的所有對象('firstName,lastName,ID,examValue,score')屬於Exam類型,而不是它們目前的內容(string,int等)。也就是說,或者改變'arrayList'來接受不同的類型(把它作爲一個ArrayList類型,而不是一個'Exam'對象的數組)。 – rageandqq 2015-02-09 20:22:54

0

您可以嘗試使用arrayList = new Exam[]{ /* stuff */ }。您嘗試使用的語法僅在數組聲明中有效。

此外,您不能使用不同基本類型的變量初始化Exam類型的數組。

+0

我是新來的對象,你能否提供任何使用數組中的對象@ Mints97的例子? – jordan 2015-02-09 20:09:08

0

這裏Exam[] arrayList = null;你說的陣列的類型是考試,那麼你說 arrayList = {firstName, lastName, ID, examValue, score};陣列的類型爲String是2所陳述相互矛盾