Java – while文で複数条件でループ処理する方法
Javaのwhile
文で複数条件を使用する場合、論理演算子&&
(AND)や||
(OR)を用いて条件を組み合わせます。
&&
はすべての条件が真の場合にループを継続し、||
はいずれかの条件が真であればループを継続します。
例えば、while(condition1 && condition2)
のように記述します。
条件が複雑な場合は、可読性を高めるために括弧を適切に使用します。
複数条件を使用したwhile文の書き方
Javaのwhile
文は、特定の条件が真である限り、繰り返し処理を行うための制御構文です。
複数の条件を組み合わせてループ処理を行う場合、論理演算子を使用します。
ここでは、&&
(論理AND)や||
(論理OR)を使った条件の設定方法について解説します。
論理演算子の使い方
&&
(論理AND):両方の条件が真である場合に真となる。||
(論理OR):いずれかの条件が真である場合に真となる。
これらの演算子を使うことで、複数の条件を組み合わせて、より複雑なループ処理を実現できます。
以下は、複数の条件を使用してwhile
文を実装した例です。
App.java
というファイル名で保存してください。
import java.util.Scanner; // Scannerクラスをインポート
public class App {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // Scannerのインスタンスを作成
int count = 0; // カウント用の変数
int limit = 10; // ループの上限
// countがlimit未満かつcountが5より小さい間ループ
while (count < limit && count < 5) {
System.out.println("カウント: " + count); // 現在のカウントを表示
count++; // カウントを1増やす
}
// countがlimit未満またはcountが5以上の間ループ
while (count < limit || count >= 5) {
System.out.println("カウント: " + count); // 現在のカウントを表示
count++; // カウントを1増やす
}
scanner.close(); // Scannerを閉じる
}
}
カウント: 0
カウント: 1
カウント: 2
カウント: 3
カウント: 4
カウント: 5
カウント: 6
カウント: 7
カウント: 8
カウント: 9
このサンプルコードでは、最初のwhile
文でcount
がlimit
未満かつ5
未満の間、カウントを表示し続けます。
次のwhile
文では、count
がlimit
未満または5
以上の間、カウントを表示します。
これにより、複数の条件を使ったループ処理の実装方法を理解できます。
実践例:複数条件を使ったwhile文の活用
複数条件を使ったwhile
文は、さまざまな場面で活用できます。
ここでは、ユーザーからの入力を受け取り、特定の条件に基づいて処理を行う実践的な例を紹介します。
この例では、ユーザーが数値を入力し、その数値が特定の範囲内にあるかどうかを確認します。
以下のコードは、ユーザーが入力した数値が1から100の範囲内であるかどうかを確認し、範囲内であればその数値を表示し、範囲外であれば再度入力を促します。
ファイル名はApp.java
とします。
import java.util.Scanner; // Scannerクラスをインポート
public class App {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // Scannerのインスタンスを作成
int number; // ユーザーが入力する数値
// ユーザーが1から100の範囲内の数値を入力するまでループ
while (true) {
System.out.print("1から100の範囲の数値を入力してください: "); // プロンプトを表示
number = scanner.nextInt(); // ユーザーからの入力を受け取る
// 入力された数値が範囲内かどうかを確認
if (number >= 1 && number <= 100) {
System.out.println("入力された数値: " + number); // 範囲内の数値を表示
break; // ループを終了
} else {
System.out.println("範囲外の数値です。再度入力してください。"); // 範囲外のメッセージを表示
}
}
scanner.close(); // Scannerを閉じる
}
}
ユーザーが入力した数値によって出力が変わります。
1から100の範囲の数値を入力してください: 150
範囲外の数値です。再度入力してください。
1から100の範囲の数値を入力してください: 50
入力された数値: 50
この実践例では、無限ループを使用してユーザーからの入力を受け付けています。
while (true)
の条件でループを続け、ユーザーが1から100の範囲内の数値を入力するまで繰り返します。
範囲内の数値が入力された場合は、その数値を表示し、break
文でループを終了します。
範囲外の数値が入力された場合は、再度入力を促すメッセージを表示します。
このように、複数条件を使ったwhile
文は、ユーザーインターフェースの実装において非常に便利です。
複雑な条件を扱うための工夫
複数の条件を使用するwhile
文では、条件が複雑になることがあります。
これに対処するための工夫やテクニックをいくつか紹介します。
これにより、コードの可読性や保守性を向上させることができます。
条件をメソッドに分割する
条件が複雑な場合、条件をメソッドに分割することで、コードを整理し、可読性を向上させることができます。
以下の例では、条件をチェックするためのメソッドを作成しています。
import java.util.Scanner; // Scannerクラスをインポート
public class App {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // Scannerのインスタンスを作成
int number; // ユーザーが入力する数値
// ユーザーが数値を入力するまでループ
while (true) {
System.out.print("1から100の範囲の数値を入力してください: "); // プロンプトを表示
number = scanner.nextInt(); // ユーザーからの入力を受け取る
// 条件をメソッドでチェック
if (isValidNumber(number)) {
System.out.println("入力された数値: " + number); // 範囲内の数値を表示
break; // ループを終了
} else {
System.out.println("範囲外の数値です。再度入力してください。"); // 範囲外のメッセージを表示
}
}
scanner.close(); // Scannerを閉じる
}
// 数値が1から100の範囲内かどうかをチェックするメソッド
private static boolean isValidNumber(int num) {
return num >= 1 && num <= 100; // 範囲内ならtrueを返す
}
}
このコードを実行すると、前回と同様の出力が得られます。
1から100の範囲の数値を入力してください: 150
範囲外の数値です。再度入力してください。
1から100の範囲の数値を入力してください: 50
入力された数値: 50
条件を論理演算子で整理する
複数の条件を組み合わせる際、論理演算子を使って条件を整理することが重要です。
条件が長くなると可読性が低下するため、適切にグループ化することが求められます。
以下のように、条件を分けて記述することで、見やすくなります。
import java.util.Scanner; // Scannerクラスをインポート
public class App {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // Scannerのインスタンスを作成
int number; // ユーザーが入力する数値
// ユーザーが数値を入力するまでループ
while (true) {
System.out.print("1から100の範囲の数値を入力してください: "); // プロンプトを表示
number = scanner.nextInt(); // ユーザーからの入力を受け取る
// 条件を整理してチェック
boolean isInRange = (number >= 1 && number <= 100);
boolean isNegative = (number < 0);
if (isInRange) {
System.out.println("入力された数値: " + number); // 範囲内の数値を表示
break; // ループを終了
} else if (isNegative) {
System.out.println("負の数は入力できません。再度入力してください。"); // 負の数のメッセージを表示
} else {
System.out.println("範囲外の数値です。再度入力してください。"); // 範囲外のメッセージを表示
}
}
scanner.close(); // Scannerを閉じる
}
}
1から100の範囲の数値を入力してください: -5
負の数は入力できません。再度入力してください。
1から100の範囲の数値を入力してください: 150
範囲外の数値です。再度入力してください。
1から100の範囲の数値を入力してください: 50
入力された数値: 50
複雑な条件を扱う際は、条件をメソッドに分割したり、論理演算子を使って条件を整理することで、コードの可読性や保守性を向上させることができます。
これにより、将来的な修正や機能追加が容易になります。
まとめ
この記事では、Javaのwhile
文を使用して複数条件でループ処理を行う方法について詳しく解説しました。
特に、条件をメソッドに分割することで可読性を向上させたり、論理演算子を使って条件を整理する工夫が重要であることを強調しました。
これらのテクニックを活用することで、より効率的で保守性の高いコードを書くことができるでしょう。
次回のプログラミングにおいて、ぜひこれらの方法を試してみてください。