0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ループ構造の使用】while文、do-while文、for文、拡張for文

Last updated at Posted at 2024-06-02

はじめに

オラクル認定資格教科書 Javaプログラマ Silver SE8
第一章 Javaの基本 
第二章 Javaのデータ型の操作
第三章 演算子と判定構造の使用
第四章 配列の作成と使用
第五章 ループ構造の使用← イマココ!!
第六章 メソッドとカプセル化の操作
第七章 継承の操作
第八章 例外の処理
第九章 Java APIの主要なクラスの操作

ループ処理について

javaでは以下のような4つのループ構文がある
・while文
・do-while文
・for文
・拡張for文

while文

while文は、条件式がtrueを戻す間、処理を繰り返す
while文の繰り返し条件として記述できる式は1つだけである

int a = 10;
int b = 0;
while(a < 5) { // aが10,9,8,7,6の時に実行される
  System.out.println(b);
  a--;
  b++;
}
// 結果: 0 1 2 3 4

if文と同様に、「{}」を省略して書くことが可能(使わないけど・・・)
省略した場合は、条件式の次の一文のみ繰り返しの対象となる

int a = 0;
while(a++ < 5) // aが0,1,2,3,4の時に実行される
  System.out.println("A");
  System.out.println("B");
// 結果: A A A A A B(Aのみが繰り返し対象)

do-while文

do-while文は条件式の前に繰り返し処理をdoで記述する
そのため、条件の真偽に関わらず必ず一度は実行される

do {
  // 繰り返し処理
} while (条件式); //最後はセミコロン「;」で終わる
----------------------------------------
中カッコ省略
 do
   //記述できる繰り返し処理は1つだけ (2つ以上書くコンパイルエラー)
 while (条件式);

for文

for文は初期化文、条件文、更新文の3つからなる
記述する際はセミコロン「;」でそれぞれを区切る
また、条件式と更新文は省略ができるが、無限ループとなる可能性があるので要注意

for (初期化文; 条件文; 更新文) { // 実行の順番は【初期化文→条件化文→繰り返し処理→更新文...】
  // 繰り返し処理
}
----------------------------------------
使用例
for (int i = 0; i < 3; i++) {
  System.out.println(i);
}
// 結果: 0 1 2

初期化文と更新文は複数記述できる
複数記述する際は、カンマ「,」で区切る。また、初期化文は同じ型でなければならない

for (int i = 0, j = 0; i < 3 && j < 3; i++, j++) {
  System.out.println(i + j);
}
// 結果: 0 2 4

なお、for文内(中カッコ「{}」内)で宣言した変数は、for文のブロック内でのみ有効

拡張for文

構文
for ( 変数名 : 集合) {
  // 繰り返し処理
}
-------------------------------------
使用例
int[] array = {1, 2, 3, 4, 5};
for (int a : array) {
  System.out.println(a);
}
// 結果: 1 2 3 4 5

繰り返し処理の制御

breakを使った繰り返し処理の中断

int num = 0;
while (num < 4) {
  if (num == 3) {
    break; // numが3になったら繰り返しから抜ける
  }
    System.out.println(num);
  num++;
}
// 結果: 0 1 2

多重ループでbreakした際は、直近のループのみ抜けて、外側のループは継続される

continueを使った繰り返し処理のスキップ

continueはループ処理から抜けるのではなく、continue以降の繰り返し処理をスキップして、次回のループが実行される

for (int i = 0; i < 5; i++) {
   if (i == 3) {
    continue; // numが3の時だけ以下の処理が更新式までスキップされる
  }
    System.out.println(num);
}
// 結果: 0 1 2 4

ラベルを使ってbreakとcontinue時に制御を移す箇所を指定

以下の例では、通常、2重ループの内側のループでbreakした際には、内側のループからのみ抜けて。外側からは抜けないが、ラベルを利用することで外側まで抜けることができる

samle : //ラベルを一番外に置くことで、breakでここまで抜ける
for (int i = 0; i < 10; i++) {
  for (int j = 0; j < 10; j++) {
    if (3 < j) {
      break sample;
    }
    System.out.println("j:" + j);
  }
  System.out.println(i);
}
// 結果: j:0 j:1 j:2

リンク集

【Javaの基本①】クラスの構造
【Javaの基本②】パッケージとインポート
【継承の操作②】インターフェース
【Javaのデータ型の操作①】プリミティブ型のデータ・参照型
【演算子と判定構造の使用①】論理演算子(&&、||)、同一性(==)、同値性(equals)
【演算子と判定構造の使用②】分岐処理(if、swich)
【配列の作成と使用】
【ループ構造の使用】while文、do-while文、for文、拡張for文
【メソッドとカプセル化の操作①】メソッドの概要
【メソッドとカプセル化の操作②】オーバーロード、コンストラクタ
【継承の操作①】クラスの継承
【例外の処理】
【Java APIの主要なクラスの操作】

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?