0

「インデックスが範囲外」をチェックするためのベストプラクティスと解決策は次の解決策は機能しますが、かなりハッキーな感じがします。より良い選択肢はありますか?

public void nextPerson(int index){ //Index is the current location in the arraylist
    try{
        System.out.println(thePeople.get(index++));
    }
    catch (IndexOutOfBoundsException e){
        System.out.println("At the end");
    }
}
4

2 に答える 2

0

Arraylist インデックスを追跡するためのローカル変数を用意することで、そのことがわかりました。代わりに、ArrayList の移動を処理するための 2 つのメソッドを用意することができました。出力用の現在位置用の 1 つ付き。

if(arrayPosition < thePeople.size() - 1)
于 2012-11-06T15:46:49.627 に答える
0

編集: Java は値渡しです。つまり、「インデックス」変数を​​関数に渡すと、外部変数は関数内で実行された変更の影響を受けません。

したがって、リストのように、インデックス変数をクラススコープのままにしておく必要があります...

public void nextPerson(){ 
    if (index>=0 && index<thePeople.size())
        System.out.println(thePeople.get(index++));
    } else {
        System.out.println("At the end");
    }
}

OR 渡して AND を返す

    public int nextPerson(int index){ 
        if (index>=0 && index<thePeople.size())
            System.out.println(thePeople.get(index++));
        } else {
            System.out.println("At the end");
        }
        return index;
    }

同じことがpreviouPersonにも当てはまりますindex--

ちなみに、インデックスをこのオブジェクトの外部のコンシューマ クラスに保持すると、リスト全体を取得してコンシューマ クラスで反復処理できます...

于 2012-11-06T13:45:45.673 に答える