4

現時点では、私はこれを持っています:

 do{
           if (i < y){ //y is a constant

               ObsHandler.obsPartsHandler(); //increment i twice
               ObsHandler.search(); 

           }
           else { 
               break;
           }

       } while (!endline.equals(null)); // endline is changed during each loop cycle

このループと私が持っている入力では、endlineをnullにすることはできません。これにより、whileループの中断条件が冗長になります。このループをforループに変換しようとすると、Eclipseから誤った構成エラーが発生します。

すなわち:

for (i < y) {
       ObsHandler.obsPartsHandler(); //increment i twice
       ObsHandler.search(); }

私が持っているwhileループは機能しますが、それは私には悪い習慣のように思えます。助言がありますか?ありがとう。

4

4 に答える 4

6

チェックする必要がない場合endLineでも、whileループを使用できます。

while (i < y) {    
    ObsHandler.obsPartsHandler(); //increment i twice
    ObsHandler.search(); 
}

あなたもチェックする必要がある場合endLine

while (i < y && !endline.equals(null)) {    
    ObsHandler.obsPartsHandler(); //increment i twice
    ObsHandler.search(); 
}

注:do / while(初期コード)とwhile {}の違いは、最初のケースでは、ループが常に少なくとも1回実行されることです。しばらくの間{}、最初に条件が真でなければ、それはまったく実行されません。これは、forループと同じ動作です(ループの前に条件がfalseの場合は実行されません)。

于 2012-07-06T13:41:28.157 に答える
6

ループを使用する場合forは、標準の3つの部分すべてが必要ですfor。2つの条件があるため、両方を条件部分に含める必要があります。

for ( ; i < y && !endline.equals(null); ) {
    ObsHandler.obsPartsHandler();
    ObsHandler.search();
}

iおそらく、のような初期化コードがあり、ループi=0の初期化セクションに入る可能性もあります。forそれ以外の場合、あなたが持っているのが、反復している配列やリストなしでチェックする一連の条件である場合、whileまたはdo実際により適している場合。

于 2012-07-06T13:39:24.413 に答える
2

ループは、コードにとって自然な選択のwhileようです。私はそれを次のように単純化します:

do {
  ObsHandler.obsPartsHandler(); //increment i twice
  ObsHandler.search(); 
} while (i < y && !endline.equals(null)); // endline is changed during each loop cycle

または、前に条件を確認する必要がある場合:

while (i < y && !endline.equals(null)) {
  ObsHandler.obsPartsHandler(); //increment i twice
  ObsHandler.search();
}
于 2012-07-06T13:42:21.637 に答える
2
for (boolean start=true;(start || endline != null) && i < y;){
    start=false;
    ObsHandler.obsPartsHandler(); //increment i twice
    ObsHandler.search();
}

(startendline != null)2回目のみテストされます。
i < y初めてテストされるだけです。

于 2012-07-06T13:44:23.733 に答える