logo

Javaのループ

プログラミング言語のループは、ある条件が true と評価される間、一連の命令/関数を繰り返し実行することを容易にする機能です。 Java には、ループを実行するための 3 つの方法が用意されています。すべての方法で同様の基本機能が提供されますが、構文と条件チェック時間が異なります。

Java は 3 つのタイプの条件文を提供します。この 2 番目のタイプはループ文です。



  • while ループ: while ループは、指定されたブール条件に基づいてコードを繰り返し実行できるようにする制御フロー ステートメントです。 while ループは、繰り返しの if ステートメントと考えることができます。

構文:

while (boolean condition) { loop statements... }>

ジャワ








/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> >public> static> void> main (String[] args) {> >int> i=>0>;> >while> (i<=>10>)> >{> >System.out.println(i);> >i++;> >}> >}> }>

>

>

アメリカは何都市ですか
出力

0 1 2 3 4 5 6 7 8 9 10>
  • フローチャート: Javaのforループ
    • While ループはブール条件のチェックから始まります。 true と評価された場合は、ループ本体のステートメントが実行され、そうでない場合は、ループに続く最初のステートメントが実行されます。このため、とも呼ばれます 入口制御ループ
    • 条件が true と評価されると、ループ本体内のステートメントが実行されます。通常、ステートメントには、次の反復で処理される変数の更新値が含まれます。
    • 条件が false になると、ループが終了し、ライフ サイクルの終わりが示されます。
  • for ループ: for ループは、ループ構造を記述する簡潔な方法を提供します。 while ループとは異なり、for ステートメントは初期化、条件、およびインクリメント/デクリメントを 1 行で実行するため、ループの構造が短く、デバッグが容易になります。

構文:

for (initialization condition; testing condition;increment/decrement) { statement(s) }>

ジャワ




/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> >public> static> void> main (String[] args) {> >for> (>int> i=>0>;i<=>10>;i++)> >{> >System.out.println(i);> >}> >}> }>

>

>

出力

0 1 2 3 4 5 6 7 8 9 10>
  • フローチャート:
    一方を行います
      初期化条件: ここでは、使用中の変数を初期化します。 for ループの開始を示します。すでに宣言されている変数を使用することも、ループに対してのみローカルに変数を宣言することもできます。テスト条件: ループの終了条件をテストするために使用されます。ブール値を返す必要があります。それはまた、 エントリ制御ループ ループ ステートメントの実行前に条件がチェックされるためです。ステートメントの実行: 条件が true と評価されると、ループ本体内のステートメントが実行されます。インクリメント/デクリメント: 次の反復で変数を更新するために使用されます。ループの終了: 条件が false になると、ループは終了し、ライフ サイクルの終了を示します。
  • 一方を行います: do while ループは while ループに似ていますが、ステートメントの実行後に条件をチェックする点が異なるだけであり、したがって、 制御ループを終了します。

構文:

do { statements.. } while (condition);>

ジャワ




/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> >public> static> void> main (String[] args) {> >int> i=>0>;> >do> >{> >System.out.println(i);> >i++;> >}>while>(i<=>10>);> >}> }>

>

>

出力

0 1 2 3 4 5 6 7 8 9 10>
  • フローチャート:
    • do while ループはステートメントの実行から始まります。初めての為、状態の確認は行っておりません。
    • ステートメントの実行と変数値の更新後、条件の値が true または false かどうかがチェックされます。 true と評価された場合、ループの次の反復が開始されます。
    • 条件が false になると、ループが終了し、ライフ サイクルの終わりが示されます。
    • do-while ループは、条件がチェックされる前に少なくとも 1 回ステートメントを実行するため、終了制御ループの例であることに注意することが重要です。

ループの落とし穴

    無限ループ: あらゆる種類のループを実装する際に最もよくある間違いの 1 つは、ループが永遠に終了しない可能性があること、つまりループが無限時間実行されることです。これは、何らかの理由で条件が失敗した場合に発生します。例: 無限 for ループ:

ジャワ




/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> >public> static> void> main(String[] args)> >{> >for> (;;) {> >}> >}> }>

>

>

無限の while ループ:

ジャワ




/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> >public> static> void> main (String[] args) {> >while> (>true>)> >{> >// statement> >}> > >}> }>

>

>

ジャワ




//Java program to illustrate various pitfalls.> public> class> LooppitfallsDemo> {> >public> static> void> main(String[] args)> >{> >// infinite loop because condition is not apt> >// condition should have been i>0.>> >}> >}> }>

>

>

もう 1 つの落とし穴は、ループを通じてコレクション オブジェクトに何かを追加している可能性があり、メモリ不足になる可能性があることです。以下のプログラムを実行しようとすると、しばらくするとメモリ不足例外がスローされます。

ジャワ




//Java program for out of memory exception.> import> java.util.ArrayList;> public> class> Integer1> {> >public> static> void> main(String[] args)> >{> >ArrayList ar =>new> ArrayList();> >for> (>int> i =>0>; i { ar.add(i); } } }>

>

>

出力:

Exception in thread 'main' java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Unknown Source) at java.util.Arrays.copyOf(Unknown Source) at java.util.ArrayList.grow(Unknown Source) at java.util.ArrayList.ensureCapacityInternal(Unknown Source) at java.util.ArrayList.add(Unknown Source) at article.Integer1.main(Integer1.java:9)>

入れ子になったループ:

ネストされたループとは、別のループ ステートメント内のループ ステートメントを意味します。

ループにはさまざまな組み合わせがあります。 のために ループ、 その間 ループ、 一方を行います ループ。

例1 ネストされた for ループ

ジャワ


オープンソース OS の例は次のとおりです。



二分探索アルゴリズム

/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> >public> static> void> main (String[] args) {> >for>(>int> i =>0>; i <>3>; i++){> >for>(>int> j =>0>; j <>2>; j++){> >System.out.println(i);> >}> >System.out.println();> >}> >}> }>

>

>

出力

0 0 1 1 2 2>

例2 ネストされたwhileループ

ジャワ




import> java.io.*;> class> GFG {> >public> static> void> main(String[] args)> >{> >int> i =>1>, j =>1>;> >while> (i <=>3>) {> >while> (j <=>3>) {> >System.out.print(j);> >j++;> >}> >i++;> >System.out.println(>''>);> >j =>1>;> >}> >}> }>

>

>

出力

123 123 123>

例3 ネストされた do while ループ

ジャワ




/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> >public> static> void> main(String[] args)> >{> >int> row =>1>, column =>1>;> >int> x;> >do> {> >x =>4>;> >do> {> >System.out.print(>''>);> >x--;> >}>while> (x>= 行);>> );> >column++;> >}>while> (column <=>5>);> >System.out.println(>' '>);> >row++;> >}>while> (row <=>5>);> >}> }>

>

>

出力

1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5>

例4 ネストされた while ループと for ループ

ジャワ




/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> >public> static> void> main(String[] args)> >{> >int> weeks =>3>;> >int> days =>7>;> >int> i =>1>;> >// outer loop> >while> (i <= weeks) {> >System.out.println(>'Week: '> + i);> >// inner loop> >for> (>int> j =>1>; j <= days; ++j) {> >System.out.println(>' Days: '> + j);> >}> >++i;> >}> >}> }>

>

>

出力

Week: 1 Days: 1 Days: 2 Days: 3 Days: 4 Days: 5 Days: 6 Days: 7 Week: 2 Days: 1 Days: 2 Days: 3 Days: 4 Days: 5 Days: 6 Days: 7 Week: 3 Days: 1 Days: 2 Days: 3 Days: 4 Days: 5 Days: 6 Days: 7>