Javaプログラミングを学習していると、「処理をずっと繰り返したい」という場面や、逆に「プログラムが止まらなくなって焦った」という経験をすることがあります。
これらはすべて「無限ループ」と呼ばれる現象に関係しています。
この記事では、Javaにおける無限ループの正しい作り方(while文・for文)から、break を使った安全な抜け出し方、そして実行してしまった無限ループの緊急停止方法(EclipseなどのIDE含む)まで、現在の開発環境に合わせて徹底解説します。
![]() 執筆者:マヒロ |
|
Javaで無限ループを作る2つの基本構文
Javaで「終わりのない繰り返し」を作る方法は主に2つあります。
while 文を使う方法と for 文を使う方法です。
どちらも機能は同じですが、可読性や好みに応じて使い分けられます。
while文を使った無限ループ while(true)
最も一般的で読みやすいのが、while 文を使った方法です。
条件式に常に「真(true)」となる値を渡すことで、ループを継続させます。
public class WhileLoopExample {
public static void main(String[] args) {
// 条件式に true を指定して無限ループにする
while (true) {
System.out.println("この処理は永遠に繰り返されます");
// 実行確認のためスリープ(1秒待機)を入れています
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
while (true) と記述することで、「条件が常に成立している」状態を作り出しています。
シンプルで意図が伝わりやすいため、無限ループを作りたい場合の第一選択肢となります。
for文を使った無限ループ for(;;)
for 文を使っても無限ループを作成できます。
初期化、条件式、更新処理のすべてを省略する独特な書き方をします。
public class ForLoopExample {
public static void main(String[] args) {
// 全ての式を省略して無限ループにする
for (;;) {
System.out.println("for文による無限ループ中です");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
for (;;) という記述は、C言語の時代からある伝統的な書き方です。
「条件がない=終了しない」と解釈され、無限ループとなります。
現代のJava開発では while (true) の方が直感的で好まれる傾向にありますが、古いコードやベテランエンジニアのコードで見かけることがあります。
無限ループを適切に止める break 文の使い方
無限ループといっても、本当に「永久に」動かし続けるプログラムは稀です。
通常は「ある条件を満たしたら終了する」という出口を用意します。この時に使うのが break 文です。
if文とbreakを組み合わせて脱出する
ループ処理の中で if 文を使って条件を判定し、終了条件に合致した場合に break を実行してループを抜けます。
import java.util.Scanner;
public class BreakLoopExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("文字を入力してください('exit'で終了):");
while (true) {
System.out.print("> ");
String input = scanner.nextLine();
// 入力された文字が "exit" ならループを抜ける
if ("exit".equals(input)) {
System.out.println("ループを終了します。");
break; // ここでwhileブロックの外へ脱出
}
System.out.println("入力された文字: " + input);
}
System.out.println("プログラムを終了しました。");
scanner.close();
}
}
実行結果は以下の通りです。
文字を入力してください('exit'で終了):
> こんにちは
入力された文字: こんにちは
> test
入力された文字: test
> exit
ループを終了します。
プログラムを終了しました。
ユーザーが “exit” と入力した時だけ if 文の中に入り、break が実行されます。
これにより無限ループが強制的に中断され、その後の処理(プログラム終了)へと進みます。
これが「意図的な無限ループ」の正しい使い方です。
実行中の無限ループを強制停止する方法(止め方)
開発中、コードのミス(バグ)によって、意図せずプログラムが止まらなくなってしまうことがあります。
そのような場合の「止め方」を環境別に紹介します。
EclipseやIntelliJ IDEAでの止め方
統合開発環境(IDE)で実行している場合、コンソールビューにある「停止ボタン(赤い四角アイコン)」をクリックします。
- Eclipse:コンソール画面の上部ツールバーにある赤い四角いアイコン(終了)を押します。
- IntelliJ IDEA:実行ウィンドウの左側または上部にある赤い四角いアイコン(Stop)を押します。
もしボタンがグレーアウトして押せない場合は、すでにプログラムが終了しているか、別のプロセスを選択している可能性があります。
コマンドライン(ターミナル)での止め方
コマンドプロンプトやターミナルで java コマンドを使って実行している場合は、キーボードショートカットを使います。
- Windows / Mac / Linux共通: キーボードの
Ctrlキーを押しながらCキーを押す(Ctrl + C)。
これで実行中のプロセスに割り込み信号が送られ、強制終了させることができます。
意図しない無限ループ(エラー)の原因と対策
バグとしての無限ループは、CPUのリソースを食いつぶし、PCの動作を重くする原因になります。
初心者が陥りやすいミスのパターンを知っておきましょう。
1. カウンタ変数の更新忘れ
while 文などでカウンタ変数を使っている場合に、変数を増やしたり減らしたりする処理(インクリメント/デクリメント)を忘れると、条件が永遠に変わらず無限ループになります。
int i = 0;
while (i < 5) {
System.out.println("i = " + i);
// i++; を書き忘れているため、iはずっと0のまま!
// 結果:無限ループ発生
}
対策として、ループ内の処理の最後に、必ず変数を更新する記述があるか確認しましょう。
2. 終了条件の論理ミス
条件式の書き方を間違えて、「常に真(true)」になるように書いてしまうケースです。
int count = 10;
// countは減っていくのに、「0より大きい間」ではなく「0以上なら」などのミス
// あるいは減らすべきなのに増やしてしまうなど
while (count > 0) {
System.out.println(count);
count++; // 減らすべきなのに増やしているため、永遠に0より大きいまま!
}
対策として、ループを書く際は、「変数がどのように変化し、いつ条件がfalseになるか」をトレース(頭の中でシミュレーション)する癖をつけましょう。
3. 小数点(double/float)の比較による誤差
浮動小数点数は計算誤差を含むため、== や != での終了判定を行うと、想定通りに止まらないことがあります。
対策として、ループの制御変数には、可能な限り整数(int)を使用するか、不等号(<, >)を使って範囲で判定するようにします。
無限ループはどんな時に使う?実務での活用例
「無限ループ=悪いもの」ではありません。
サーバーサイド開発や組み込みシステムなど、特定の用途では必須のテクニックです。
1. 常駐アプリケーション(サーバー)
Webサーバーやチャットボットのように、「24時間365日リクエストを待ち続けるプログラム」は、メイン部分が巨大な無限ループになっています。
while (serverIsRunning) {
// リクエストが来るのを待つ
Request req = server.accept();
// リクエストを処理する
process(req);
}
2. ユーザー入力の待機とリトライ
先ほどの break の例のように、ユーザーが正しい値を入力するまで何度も入力を促す処理(バリデーション)にも使われます。
「正しい値が来るまで終わらない」というロジックは、無限ループと break で実装するのが最もシンプルです。
3. ゲームのメインループ
ゲーム開発においても、画面の描画やキャラクターの移動を絶えず更新し続けるために、メイン部分は無限ループで構成されています。
Javaのスキルを活かして年収を上げる方法
以上、Javaでの無限ループの作り方や止め方などについて解説してきました。
なお、Javaのスキルがある場合には、「転職して年収をアップさせる」「副業で稼ぐ」といった方法を検討するのがおすすめです。
Javaエンジニアの需要は非常に高いため、転職によって数十万円の年収アップはザラで、100万円以上年収が上がることも珍しくありません。
なお、転職によって年収を上げたい場合は、エンジニア専門の転職エージェントサービスを利用するのが最適です。
併せて、副業案件を獲得できるエージェントにも登録しておくと、空いている時間を活かして稼げるようなJavaの案件を探しやすくなります。
転職エージェントも副業エージェントも、登録・利用は完全無料なので、どんな求人や副業案件があるのか気になる方は、気軽に利用してみるとよいでしょう。



