回答編集履歴

1

コメントを受けて追記

2016/07/21 17:36

投稿

swordone
swordone

スコア20649

test CHANGED
@@ -9,3 +9,69 @@
9
9
  ```
10
10
 
11
11
  これは、例えば"123"と入力した際、**長さ123の配列を作成している**事になります。どんな数を入れようともこの配列の中身はすべて0なので、答えの数値に0が入っていないかぎりヒットもブローもしないことになります。
12
+
13
+
14
+
15
+ ###ではどうするか?
16
+
17
+ - 文字列の各文字を取り出して、'0'との差で数値にする(数値であることのチェックなどが事前に必要)
18
+
19
+ ```java
20
+
21
+ String str = br.readLine();
22
+
23
+ int[] a = new int[answerNumList.length];
24
+
25
+
26
+
27
+ for (int i = 0; i < answerNumList.length; i++) {
28
+
29
+ a[i] = str.charAt(i) - '0';
30
+
31
+ }
32
+
33
+ ```
34
+
35
+ - 文字列を分解し、各文字をparseInt
36
+
37
+ ```java
38
+
39
+ String str = br.readLine();
40
+
41
+ int[] a = new int[answerNumList.length];
42
+
43
+ String[] split = str.split("");
44
+
45
+
46
+
47
+ for (int i = 0; i < answerNumList.length; i++) {
48
+
49
+ a[i] = Integer.parseInt(split[i]);
50
+
51
+ }
52
+
53
+ ```
54
+
55
+ - 数値変換し、剰余算で各桁を取り出す(コード略)
56
+
57
+
58
+
59
+ など、やりようはいくらかあります。
60
+
61
+
62
+
63
+ ---
64
+
65
+
66
+
67
+ なお、他にも
68
+
69
+ - 正解の数設定が各桁ランダムになる保証がないので、shuffleなどを使って並べ替えてから取り出すべき
70
+
71
+ - ヒット、ブローの判定が二度手間。
72
+
73
+ - メソッドに切り分けて処理するべき(入力が適正かどうかの判定など)
74
+
75
+
76
+
77
+ など、いくつか問題を抱えているようです。