Java | while文

Java Java
スポンサーリンク

while文の実務で使うコードサンプル集

ここでは、JavaScript の whileを、「実務でどう使うか」に焦点を当ててわかりやすく紹介します。
単なる繰り返しではなく、「いつ止めるか」を自分でコントロールする点がポイントです。


1. ユーザー入力のバリデーション(再入力チェック)

✅ 実務で最もよくあるパターン:「正しい入力が来るまで繰り返す」

let input = "";
while (!input || input.length < 3) {
  input = prompt("ユーザー名を3文字以上で入力してください:");
}

console.log(`登録されたユーザー名:${input}`);
Java

🧠 ポイント

  • 条件を満たさない限り、何度でも繰り返す。
  • while は「条件が真である間、実行」なので、ユーザー入力チェックにぴったり。
  • 実際のWebフォームではこのロジックをonSubmit内などで使う。

2. APIやサーバー通信の「リトライ処理」

✅ ネットワーク不安定時など、「成功するまで試す」実務的な使い方。

let success = false;
let retryCount = 0;
const MAX_RETRY = 3;

while (!success && retryCount < MAX_RETRY) {
  try {
    console.log(`API通信を試行中... (${retryCount + 1}回目)`);
    const res = await fetch("https://example.com/api/data");
    if (!res.ok) throw new Error("通信エラー");
    const data = await res.json();
    console.log("成功:", data);
    success = true;
  } catch (e) {
    console.error("失敗:", e.message);
    retryCount++;
  }
}

if (!success) {
  console.warn("3回試しても通信に失敗しました。");
}
Java

🧠 ポイント

  • 実務では「失敗したらもう1回」「3回で諦める」などの制御がよくある。
  • while でリトライロジックを明快に表現できる。
  • for より柔軟な「条件ベース制御」が可能。

3. データベースやファイルの一括処理(1件ずつ処理)

✅ データがある限り繰り返す。配列操作やバッチ処理で使う。

const queue = ["タスクA", "タスクB", "タスクC"];

while (queue.length > 0) {
  const task = queue.shift(); // 先頭を取り出す
  console.log(`実行中:${task}`);
  // 実際はここでAPIやDB処理などを行う
}

console.log("すべてのタスクが完了しました!");
Java

🧠 ポイント

  • shift() で1件ずつ取り出して処理。
  • 配列の残りがなくなったら自動的に終了。
  • 実務では「キュー処理」「メール送信」「ジョブ管理」などに応用。

4. ページング付きAPIを「最後のページまで」自動取得

while で「次のページがある限り取得」を表現。

let page = 1;
let hasNext = true;
let allData = [];

while (hasNext) {
  console.log(`ページ${page}を取得中...`);
  const res = await fetch(`https://api.example.com/users?page=${page}`);
  const data = await res.json();
  
  allData = allData.concat(data.items);

  if (data.nextPage) {
    page++;
  } else {
    hasNext = false; // 次がないので終了
  }
}

console.log(`全${allData.length}件のユーザーを取得しました`);
Java

🧠 ポイント

  • ページネーション付きのAPIでよく登場。
  • 取得データがなくなるまで自動でループ。
  • 実務の「APIデータ統合」「自動収集」に直結。

5. サーバー監視や定期ポーリング処理

✅ 5秒ごとに状態をチェックする、リアルな監視スクリプト例。

let attempts = 0;

while (true) {
  console.log("サーバー状態を確認中...");
  const res = await fetch("https://example.com/health");
  const data = await res.json();
  
  if (data.status === "OK") {
    console.log("サーバーは正常です ✅");
    break; // 正常なら終了
  }

  attempts++;
  if (attempts >= 5) {
    console.error("5回連続で異常。アラートを送信します 🚨");
    break;
  }

  await new Promise(resolve => setTimeout(resolve, 5000)); // 5秒待機
}
Java

🧠 ポイント

  • 無限ループに見えるが、break で明示的に止めて安全。
  • 現場の「監視」「自動再試行」「バックグラウンド処理」でよく登場。
  • setTimeout よりも制御がわかりやすい。

6. 練習問題(実務応用)

問題:

while を使って、ユーザーが "exit" と入力するまで名前を入力させ、すべての名前を配列に保存して最後に一覧表示してください。

💡ヒント:

  • prompt() を使って入力を受け取る
  • "exit" が入力されたら終了
  • 配列に追加しておく

解答例+ステップ解説

let names = [];
let input;

while (true) {
  input = prompt("名前を入力してください(終了するには 'exit' と入力):");
  if (input === "exit") break;
  names.push(input);
}

console.log("入力された名前一覧:", names);
Java

📘 ステップ解説

  1. 無限ループ while (true) で繰り返しを定義
  2. prompt() で入力を受け取る
  3. "exit" のときに break でループを抜ける
  4. それ以外は push() で配列に追加
  5. 最後に一覧を表示

まとめ:while文が実務で活きる場面

シーン使いどころよくある代替
入力バリデーション正しい値が来るまで繰り返すdo...while
通信リトライ成功するまで試行for + try/catch
キュー処理データが残っている間for...of
ページング取得次のページが存在する間for + break
監視処理状態変化を監視setInterval

タイトルとURLをコピーしました