今回はwhile文のサンプルです。
課題形式で作ってみましょう。
では、
■入力された数が奇数か偶数か判定するプログラムを作成せよ。
ただし、望む限り何回でも入力・判定が繰り返せるようにしなさい。
判定までは簡単かと思います。
■Practice_04.java(判定のみ)
import java.util.Scanner;
public class Practice_04 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("奇数か偶数かの判定を行います");
System.out.print("数字を入力して下さい : ");
int n = sc.nextInt();
if(n % 2 == 0) {
System.out.println(n + " は偶数です");
} else {
System.out.println(n + " は奇数です");
}
}
}
問題はこれをどうやって繰り返すのか、ということです。
今回はタイトルにある通り、while文を使ってみます。
■Practice_04.java
import java.util.Scanner;
public class Practice_04 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int retry;
System.out.println("奇数か偶数かの判定を行います");
do {
System.out.print("数字を入力して下さい : ");
int n = sc.nextInt();
if(n % 2 == 0) {
System.out.println(n + " は偶数です");
} else {
System.out.println(n + " は奇数です");
}
System.out.print("もう一度? Yesならば1、Noならばそれ以外の数を入力して下さい : ");
retry = sc.nextInt();
System.out.println(); // 改行
} while(retry == 1);
}
}
これで繰り返し実行することができます。
■ポイント
今回はwhile文の中でもdo while文を使ってみました。
そうすれば、判定処理のあとに条件判定を行うことができます。
6行目で繰り返すかどうかの変数retryを用意。
そして行目のdo whileの条件判定で入力された値が「1」かどうかで条件判定を行います。
すると「1」が入力され続ける限り、奇数偶数の判定を繰り返すことができます。
■Practice_04.java(別解)
import java.util.Scanner;
public class Practice_04 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("奇数か偶数かの判定を行います");
while(true) {
System.out.print("数字を入力して下さい : ");
int n = sc.nextInt();
if(n % 2 == 0) {
System.out.println(n + " は偶数です");
} else {
System.out.println(n + " は奇数です");
}
System.out.print("もう一度? Yesならば1、Noならばそれ以外の数を入力して下さい : ");
if(sc.nextInt() != 1) {
break;
}
}
}
}
■ポイント
別解も1つ用意してみました。
これはwhile文を使用しています。
これもよくあるパターンなので覚えておくといいでしょう。
while文の条件判定を「true」にします。
このままでは無限ループが発生してしまうのですが、if文の中にbreak文を記述しておきます。
すると、繰り返し条件判定を書くことができます。
人によると思いますが、こちらの方が読みやすいかもしれません。
■まとめ
好きなだけ繰り返せるプログラムにはwhile文を使う。
入力された値の判定がwhile文の条件判定になる。
判定は二種類。
while文の条件判定に書く
while文の条件を「true」にして、中にif文でbreak文を設けておく。
