1

実際のbreakステートメントを使用せずにこのループを中断する他の方法はありますか?どういうわけか、私の教授は、スイッチ内の他の場所でブレークを使用するのが好きではありません。

配列内の次の空のスペースにあるオブジェクトの配列にオブジェクトを追加するメソッドで問題が発生しています

これは私のコードです:(それを行う他の方法はありますか?)

public void add(Employee employeeObj)throws ArrayIndexOutOfBoundsException{
        try{
            for(int i= 0; i<MAX; i++){
                if(listEmployee[i] == null){
                    listEmployee[i] = employeeObj;
                    break;
                }

            }
        }catch(ArrayIndexOutOfBoundsException e){
            throw new ArrayIndexOutOfBoundsException("ERROR!");
        }
    }

このメソッドは、employeObjを配列に追加するだけでよく、その場合は例外が発生します。ご協力いただきありがとうございます

4

5 に答える 5

3

これを試して:

  for(int i= 0; i<MAX; i++){
    if(listEmployee[i] == null){
        listEmployee[i] = employeeObj;
        i=MAX;
    }

しかし、休憩を使用しても問題はありません。ループの処理を停止したい状況は常にありbreak;、次の反復でループを停止させる値にループ カウンターを設定するよりも、 を使用する方がはるかに理にかなっています (そして読みやすくなります!)。

于 2013-02-07T05:07:56.680 に答える
2

i = MAXそのような些細な状況がない場合は、単純にブール値フラグを実行または使用できます。

個人的な注意として、break外部のswitch声明の使用を禁止することは意味がありません。

于 2013-02-07T05:07:20.770 に答える
0

配列内の次の空きスペースにあるオブジェクトの配列にオブジェクトを追加する方法で問題が発生しています

単純に配列の長さを調べて、次の場所にオブジェクトを挿入することをお勧めします。配列の全長を繰り返す必要はありません。

public void add(Employee employeeObj){
           int n = listEmployee.length;
                listEmployee[n] = employeeObj;        
    }
}
于 2013-02-07T05:29:32.160 に答える
0

あるいは、次のようにすることもできます

     int i = Arrays.asList(listEmployee).indexOf(null);
     if (i >= 0) {
         listEmployee[i] = employeeObj;
     }

Arrays.asList は、新しいリストではなく、配列のビューを作成することに注意してください

于 2013-02-07T05:30:46.213 に答える
0

この場合、メソッドは他に何もしていないため、return代わりにbreak次のものを使用できます。

public void add(Employee employeeObj)throws ArrayIndexOutOfBoundsException {
    try{
        for (int i= 0; i<MAX; i++) {
            if (listEmployee[i] == null) {
                listEmployee[i] = employeeObj;
                return;
            }

        }
    } catch(ArrayIndexOutOfBoundsException e) {
        throw new ArrayIndexOutOfBoundsException("ERROR!");
    }
}

しかし、一般的に、ここでの他の回答はより適切です。breakそうは言っても、なぜ使用すべきでないのかを教授に説明してもらいたいと思います-私見の代替案は、多くの場合、はるかに読みにくいです。

于 2013-02-07T05:10:06.647 に答える