1

Java での OOP 導入プロジェクトの一環として与えられた課題を理解するのに苦労しています。すべての名前は変更されており、正確に翻訳されているわけではありません。次の方法を完了するよう求められます。

public boolean insertHorse(Horse horse) {
return true;
}

メソッドのシグネチャは変更できません。メソッドが含まれるクラスの馬の配列に馬を追加し、挿入が成功した場合は true を返し、そうでない場合は false を返すことになっています。だからこれは私がやったことです:

    public boolean insertHorse(Horse horse) {

    //Create a temp array with length equal to h
    Horse[] temp = new Horse[this.horses.length+1];

    //copy the horses to the temp array
    for (int i = 0; i < horses.length; i++){
        temp[i] = horses[i];
    }

    //add the horse on the temp array
    temp[temp.length-1] = horse;

    //change the reference of the old array to the temp one
    veiculos = temp;
    return true;

私の問題は、これがどのように、そしてなぜfalseになるのでしょうか? 農場の馬の数には制限がありますが、メソッドを呼び出す前にそれを確認することができます (そして計画していました)。これは私の悪い習慣ですか?

敬具、 ジョアン・シルバ

4

2 に答える 2

1

馬の数の制限を除いて、これがfalseを返す必要がある理由は考えられません。理論的には、馬が多すぎるとヒープスペースが不足する可能性がありますが、その状態では、プログラムがクラッシュする可能性があります。

この関数の外側ではなく、この関数に馬の数をチェックすることをお勧めします。そうすれば、許可されているよりも多くの馬を誤って挿入することはできません。

于 2012-12-11T02:29:34.533 に答える
0

もう 1 つ分のスペースを確保して配列を割り当てるのに十分なメモリが常にあると想定していますHorse

これが当てはまらない状況の 1 つは、OutOfMemoryErrorがスローされた場合です。

于 2012-12-11T02:28:37.670 に答える