2012-05-16 47 views
3

有人可以提供一些關於爲什麼代碼不起作用的見解嗎?問題就出在部分國家[numCountries]=newCountry;getCountry方法錯誤

我不知道爲什麼口口聲聲說類型不匹配無法轉換Country[]到國家,但我想我countries[numCountries]Country[]類型,因爲我已經把它稱爲在代碼二號線爲類型?

public class World{ 

private Country[] countries; 
private int numCountries=0; 

public boolean addCountry(Country[] newCountry){ 
    if(!(newCountry==null)){ 
     countries[numCountries]=newCountry;  //the newcountry part doesnt work, red zigzag line underlining it here im not sure why 
     numCountries++; 
     return true; 
    } 
    else 
     return false; 

     } 


} 
+4

+1告訴我們錯誤消息,並在那裏你覺得問題。 :) – jmort253

+1

因爲你有newCountry聲明爲一個數組,而不是一個國家。 –

+1

另外,newCountry!= null :) –

回答

3

你說的方法,你要添加一個國家,不加入國家的數組,所以你的方法參數可能應該失去陣列支架[]。通過這種方式,該方法更有意義,因爲它傳遞了您所說的應傳遞的內容 - 一個Country對象。在嘗試將其他國家添加到陣列之前,您還需要檢查您的方法是否未超過國家/地區數組的大小。這可以通過簡單的if語句來完成。

如果你想添加一個國家的數組,那麼你可能希望創建另一種方法,比如addCountries(Country[] newCountries)。但我不認爲你真的想這樣做,所以堅持使用經過修正的當前方法。

如果其中任何一個沒有意義,請提問 - 只需在此答案下方寫下評論即可。

+0

感謝您的意見,但現在它編譯,但我得到了一個空指針錯誤,這是很奇怪,因爲我已經創建了新的世界新的國家和新的城市,我也編輯了我的代碼和問題在頂部^^ – Liquified

+1

@ user1343502:您可能想爲此提出一個新問題。但是如果你做或者不做,你將需要指出哪個*行拋出NPE(NullPointerException),因爲這將持有關鍵看到什麼變量爲空以及爲什麼。 –

+0

@ user1343502:請參閱Dave的最新評論,告訴您爲什麼要獲得NPE。 –

3

國家之後的方括號表示您是addCountry方法正在添加一組國家,但您最有可能一次只添加一個國家/地區。

因此,將其更改爲:

public boolean addCountry(Country newCountry){ 
    .... 
}