回答編集履歴
1
コメントを受けて追記
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
|
+
など、いくつか問題を抱えているようです。
|