3

誰かがコードが機能しない理由についての洞察を提供できますか?問題は一部の国にあります[numCountries]=newCountry;

型の不一致が国に変換できないと言われ続ける理由はわかりませんが、コードの2行目でその型としてすでに呼び出しているので、自分は型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

2 に答える 2

3

Country の後の角括弧は、addCountry メソッドが国の配列を追加していることを意味しますが、一度に 1 つの国だけを追加する必要がある可能性が高くなります。

したがって、次のように変更します。

public boolean addCountry(Country newCountry){
    ....
}
于 2012-05-16T00:30:56.247 に答える
3

あなたのメソッドは、Country の配列を追加するのではなく Country を追加していると言っているので、メソッドのパラメーターはおそらく配列 brackets を失うはず[]です。このようにすると、このメソッドは、渡すべきだと言っているもの (単一の Country オブジェクト) を渡すため、はるかに理にかなっています。また、配列に別の国を追加しようとする前に、countries 配列のサイズを超えていないことをメソッドで確認する必要があります。これは単純な if ステートメントで実行できます。

Country の配列を追加する場合は、別のメソッドを作成することをお勧めしますaddCountries(Country[] newCountries)。しかし、あなたが本当にこれをやりたいとは思わないので、修正された現在の方法に固執してください。

このいずれかが意味をなさない場合は、質問してください。この回答の下にコメントを書いてください。

于 2012-05-16T00:23:41.637 に答える