新・明解 Java 入門 演習 4-19, 4-20, 4-21 解答
Hello, Terminal!swaponQです!
前回に引き続き、今回は演習 4-19, 4-20, 4-21 に取り組んでいこうと思います。
- 演習 4-19
季節を求めるList4-1の月の読み込みにおいて、1~12以外の値が入力された場合は、再入力させるよに修正したプログラムを作成せよ(do文の中にdo文が入る二重ループとなる)。
ex04_19.java
import java.util.Scanner; class ex04_19 { public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); int retry; do { int month; do { System.out.print("季節を求めます。\n何月ですか:"); month = stdIn.nextInt(); if (month >= 3 && month <= 5) { System.out.println("それは春です。"); } else if (month >= 6 && month <= 8) { System.out.println("それは夏です。"); } else if (month >= 9 && month <= 11) { System.out.println("それは秋です。"); } else if (month == 12 || month == 1 || month == 2) { System.out.println("それは冬です。"); } } while (month < 1 || month > 12); System.out.print("もう一度 1…Yes /0…No:"); retry = stdIn.nextInt(); } while (retry == 1); } }
実行結果
季節を求めます。 何月ですか:0 季節を求めます。 何月ですか:12 それは冬です。 もう一度 1…Yes /0…No:0
- 演習 4-20
n段の正方形を表示するプログラムを作成せよ。右に示すのは、nが3のときの実行結果である。
ex04_20.java
import java.util.Scanner; class ex04_20 { public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); int n; do { System.out.print("nの値:"); n = stdIn.nextInt(); } while (n <= 0); for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { System.out.print('*'); if (j == n) { System.out.println(); } else { System.out.print(' '); //正方形になるようにスペースを調整 } } } } }
実行結果
nの値:3 * * * * * * * * *
- 演習 4-21
List4-16は左下側が直角の直角三角形を表示するプログラムであった。直角が左上側、右下側、右上側の三角形を表示するプログラムをそれぞれ作成せよ。
ex04_21_1.java
import java.util.Scanner; class ex04_21_1 { public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); int n; do { System.out.print("左上直角の三角形を表示します。\n段数は:"); n = stdIn.nextInt(); } while (n < 1); for (int i = 0; i < n; i++) { for (int j = (n - i); j > 0; j--) { System.out.print('*'); } System.out.println(); } } }
実行結果
段数は:5 ***** **** *** ** *
ex04_21_2.java
import java.util.Scanner; class ex04_21_2 { public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); int n; do { System.out.print("右下直角の三角形を表示します。\n段数は:"); n = stdIn.nextInt(); } while (n < 1); for (int i = n; i > 0; i--) { for (int j = i; j - 1 > 0; j--) { System.out.print(' '); } for (int k = 0; k <= n-i; k++) { System.out.print('*'); } System.out.println(); } } }
実行結果
段数は:5 * ** *** **** *****
ex04_21_3.java
import java.util.Scanner; class ex04_21_3 { public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); int n; do { System.out.print("右上直角の三角形を表示します。\n段数は:"); n = stdIn.nextInt(); } while (n < 1); for (int i = n; i > 0; i--) { for (int k = 0; k < n - i; k++) { System.out.print(' '); } for (int j = i; j> 0; j--) { System.out.print('*'); } System.out.println(); } } }
実行結果
段数は:5 ***** **** *** ** *
今回は以上です。お疲れ様でした!
次回は演習 4-22, 4-23, 4-24 です。
Goodbye, Terminal… swaponQでした!