0

私は Java が初めてで、while ループ内で if ステートメントを使用する際に問題があります。

次のようにコードを書きました。

          while(lexicalizations.hasNext())           
           {
               myObject = lexicalizations.next().getObject();
               language= myObject.getTermLanguage();
               if (language.equals(languageCode)) {
                   System.out.println(lexicalizations.next());

               }                             
           }

ただし、if 条件が true の場合は常に、プログラムはそのブロックを実行し、while ループを終了します。したがって、残りのアイテムはチェックアウトされません。どうすればそれを解決できますか?本当にありがとう。

乾杯、アヤ。

4

3 に答える 3

1

を呼び出すたびにIterator.next()、反復子がコレクションの次の要素に移動するため、反復ごとにこのメソッドを複数回呼び出さないように注意する必要があります。要素をローカル変数に保存し、ループ本体全体で変数を操作する必要があります。

この種の落とし穴を体系的に回避するために、該当する場合は常に強化された forループを使用することをお勧めします。

for (String lex : lexicalizations) {
  ... your code uses lex here ...
}
于 2012-11-25T13:59:27.817 に答える
0

その println を実行すると、次の要素を「消費」することに注意してください。そのため、残っている要素が 1 つしかない場合は、while に戻ったときにゼロになります。

于 2012-11-25T13:59:02.220 に答える
0

ifステートメント ブロック内の反復子の次のオブジェクトに移動しています。これを回避するには、次のように使用myObjectします。すべてのオブジェクトを「訪問」します。

while (lexicalizations.hasNext())           
{
   myObject = lexicalizations.next().getObject();
   language= myObject.getTermLanguage();
   if (language.equals(languageCode)) {
      System.out.println(myObject);
   }                             
}
于 2012-11-25T14:00:59.217 に答える