ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
do-while 文とは
do-while 文は Java の後判定型繰り返し制御構文です。「先に処理を 1 回実行してから条件を評価し、条件が真である間ループを継続する」動きをします。
必ず 1 回は本体が実行されるため、「ユーザーに入力を求める」「ファイルを少なくとも 1 回読む」のような初回実行が前提のケースに向きます。
構文
do {
// 繰り返し実行する処理
} while (条件式); // <- 末尾セミコロン必須
実装例
int val = 0;
do {
System.out.println("val = " + ++val);
} while (val < 10);
出力結果
val = 1
val = 2
val = 3
val = 4
val = 5
val = 6
val = 7
val = 8
val = 9
val = 10
while 文との違い
| 項目 | while 文 | do-while 文 |
|---|---|---|
| 条件評価のタイミング | 本体実行前 | 本体実行後 |
| 本体の最低実行回数 | 0 回 | 1 回 |
| 典型用途 | 条件成立中の繰り返し | 最低 1 回必要な繰り返し |
| セミコロンの位置 | 不要 | while ( ); の末尾 |
実行回数の違い(条件が初回から false の場合)
int x = 100;
// while: 0 回実行
while (x < 10) {
System.out.println("while");
}
// do-while: 1 回実行される
do {
System.out.println("do-while");
} while (x < 10);
// 出力: do-while
典型ユースケース
1. ユーザー入力の検証
import java.util.Scanner;
Scanner sc = new Scanner(System.in);
int age;
do {
System.out.print("年齢を入力 (0-120): ");
age = sc.nextInt();
} while (age < 0 || age > 120);
System.out.println("入力された年齢: " + age);
2. メニュー表示・選択
int choice;
do {
System.out.println("1: 新規登録");
System.out.println("2: 一覧表示");
System.out.println("9: 終了");
System.out.print("選択: ");
choice = sc.nextInt();
switch (choice) {
case 1: register(); break;
case 2: list(); break;
case 9: break;
default: System.out.println("不正な入力");
}
} while (choice != 9);
3. リトライ処理
int retry = 0;
boolean success;
do {
success = callExternalApi();
retry++;
} while (!success && retry < 3);
break と continue
break: ループを抜ける
int i = 0;
do {
if (i == 5) break;
System.out.println(i);
i++;
} while (i < 10);
// 0 1 2 3 4
continue: 次回繰り返しへ
int i = 0;
do {
i++;
if (i % 2 == 0) continue; // 偶数はスキップ
System.out.println(i);
} while (i < 10);
// 1 3 5 7 9
無限ループ
do {
String line = reader.readLine();
if (line == null) break;
process(line);
} while (true);
注意点
- 末尾のセミコロンを忘れるとコンパイルエラー
- ループ内で条件変数を更新しないと無限ループになる
- 「1 回も実行したくない」ケースでは
whileを使う - 後判定の利点と引き換えに、条件が見えづらい(末尾を見るまで分からない)コードになりがち。複雑になるなら
while+ 初回フラグの方が読みやすい場合もある
do-while のフローチャート
┌──────────────────────┐
│ ループ本体を実行 (1回目) │
└──────────┬───────────┘
│
┌─────▼─────┐
│ 条件式評価 │
└─────┬─────┘
│
true │ false
│
┌──────────▼─────────┐
│ 本体を再度実行 │
└──────────┬─────────┘
│
繰り返し ────────► ループ終了
他言語との比較
| 言語 | 後判定ループ構文 |
|---|---|
| Java / C / C++ / C# | do { ... } while (cond); |
| JavaScript / TypeScript | do { ... } while (cond); |
| PHP | do { ... } while ($cond); |
| Kotlin | do { ... } while (cond) |
| Python | 存在しない。while True: ... if not cond: break で代用 |
| Go | 存在しない。for で代用 |
| Ruby | begin ... end while cond(非推奨化) |
ラベル付き break / continue
Java では多重ループから一気に抜けたいとき、ラベル付き break が便利です。do-while でも使えます。
outer:
do {
for (int i = 0; i < 10; i++) {
if (cond(i)) {
break outer; // do-while 自体を抜ける
}
}
} while (canRetry());
関連
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
同階層のページ
- for文
- 拡張for文
- while文
- do while文
- continue文 (繰り返し制御文)
- break文
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?