2017-01-12 6 views
0

通常のネストされたforループでは、ネストされたループで特定のforループを実行するかどうかを判断する条件を設定できますか?条件付きforループを入れ子にすることは可能ですか?

たとえば、次のようなコードでは、最初のループのint iが<の場合、2番目のfor文(int j)をスキップできますか?

for(int i = 0; i < 5; i++) { 
    for(int j = 0; j < 3; j++) { 
     for(int k = 0; k < 9; k++) { 
      //hell a lot of codes 
     } 
    } 
} 

したがって、i < 3の場合、実際に実行されるコードは次のようになります。

for(int i = 0; i < 5; i++) { 
    for(int k = 0; k < 9; k++) { 
     //hell a lot of codes 
    } 
} 

私はこれをしたい理由は、最も内側のコードはかなり長いですだけでなく、forループ(約10ネストされた)の数、および実際にそれらを再び繰り返したくないということです。私はメソッドでこれを行うと考えることができますが、私はメソッドやオブジェクト指向プログラミングに精通していません。

大変ありがとうございます。

答えて

4

一般的には、コードを別の方法で抽出するのが一般的です。しかし、ここであなたがそれを行うにはしたくない場合は回避策があります:

for(int i = 0; i < 5; i++) { 
    for(int j = 0; j < (i < 3 ? 1 : 3); j++) { 
     for(int k = 0; k < 9; k++) { 
      //hell a lot of codes 
     } 
    } 
} 

この方法で、i < 3場合、jループは一度だけ実行されます。


方法のアプローチは大体このようなものになります。

void outer() { 
    for(int i = 0; i < 5; i++) { 
     if(i < 3) { 
      inner(i, 0); 
     } else { 
      for(int j = 0; j < 3; j++) { 
       inner(i, j); 
      } 
     } 
    } 
} 

void inner(int i, int j) { 
    for(int k = 0; k < 9; k++) { 
     //hell a lot of codes 
    } 
} 

をあなたは方法は、静的、またはプライベートにしたい、またはパラメータ(複数可)を削除、または戻り値の型を追加することができ、あなたの質問のコードだけでは言い難いです。

+0

質問を読むのに役立ちます(また良い質問をすることもできます)。 –

+0

@TimBiegeleisen同意する - 非常に不明、shmoselを指す –

+0

@TimBiegeleisenこんにちは、私は質問にうまくいかなかったのですか?必要に応じて編集します:D – Seung

関連する問題