新・明解 Java 入門 演習 6-13, 6-14, 6-15 解答
Hello, Terminal!swaponQです!
今回は演習 6-13, 6-14, 6-15 に取り組んでいこうと思います。
- 演習 6-13
配列aの全要素を配列bに対して逆順にコピーするプログラムを作成せよ。なお、二つの配列の要素数は同一であることを仮定して良い。
import java.util.Scanner; class ex06_13 { public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); System.out.print("要素数:"); int n = stdIn.nextInt(); int[] a = new int[n]; int[] b = new int[n]; for (int i = 0; i < n; i++) { System.out.printf("a[%d] =", i); a[i] = stdIn.nextInt(); } System.out.println(); for (int i = a.length, j = 0; i > 0; i--, j++) { b[j] = a[i - 1]; } for (int i = 0; i < b.length; i++) { System.out.printf("b[%d] =%d\n", i, b[i]); } } }
・実行結果
要素数:5 a[0] =3 a[1] =7 a[2] =4 a[3] =6 a[4] =3 b[0] =3 b[1] =6 b[2] =4 b[3] =7 b[4] =3
- 演習 6-14
月を1〜12の数値として表示して、その英語表現を入力させるプログラムを作成せよ。
・出題する月の値は乱数で生成する。
・学習者が望む限り、何度でも繰り返せる。
・同一月を連続して出題しない。
文字列s1とs2が等しいかどうかの判定は、s1.equals(s2)によって行える。
import java.util.Random; import java.util.Scanner; class ex06_14 { public static void main(String[] args) { Random rand = new Random(); Scanner stdIn = new Scanner(System.in); String[] Month = { "January", "February", "March", "April", "May", "Jun", "July", "August", "September", "October", "November", "December" }; System.out.println("英語の月名を入力して下さい。"); System.out.println("なお、先頭は大文字で、2文字目以降は小文字とします。"); int r; int q = -1; LOOP: while (true) { do { r = rand.nextInt(12); } while (r == q); q = r; RE: while (true) { System.out.printf("%d月:", q + 1); String ans = stdIn.next(); if (Month[q].equals(ans)) { System.out.print("正解です。もう一度? 1…Yes/0…No:"); int flag = stdIn.nextInt(); if (flag == 0) { break LOOP; } else { continue LOOP; } } else { System.out.println("違います"); continue RE; } } } } }
・実行結果
英語の月名を入力して下さい。 なお、先頭は大文字で、2文字目以降は小文字とします。 12月:December 正解です。もう一度? 1…Yes/0…No:0
- 演習 6-15
曜日を表示して。その英語表現を入力させるプログラムを作成せよ。
・出題する曜日は乱数で生成する。
・学習者が望む限り、何度でも繰り返せる。
・同一曜日を連続して出題しない。
import java.util.Random; import java.util.Scanner; class ex06_15 { public static void main(String[] args) { Random rand = new Random(); Scanner stdIn = new Scanner(System.in); String[] day = { "sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday" }; String[] dayJ = { "日", "月", "火", "水", "木", "金", "土" }; System.out.println("英語の曜日名を小文字で入力して下さい。"); int r; int q = -1; LOOP: while (true) { do { r = rand.nextInt(7); } while (r == q); q = r; RE: while (true) { System.out.printf("%s曜日:", dayJ[q]); String ans = stdIn.next(); if (day[q].equals(ans)) { System.out.print("正解です。もう一度? 1…Yes/0…No:"); int flag = stdIn.nextInt(); if (flag == 0) { break LOOP; } else { continue LOOP; } } else { System.out.println("違います"); continue RE; } } } } }
・実行結果
英語の曜日名を小文字で入力して下さい。 日曜日:sunday 正解です。もう一度? 1…Yes/0…No:0
今回は以上です。お疲れ様でした!
次回は演習 6-16, 6-17, 6-18, 6-19 です。
Goodbye, Terminal… swaponQでした!