回答編集履歴
1
加筆
test
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
まず、「変数が初期化されていない」というのは、宣言だけして1度も代入していない状態です。
|
2
|
+
|
3
|
+
初期化されていない変数を(代入以外で)使おうとすると、「変数~~~を初期化してください」と怒られます。
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
今回のコードでは、
|
8
|
+
|
1
9
|
```java
|
2
10
|
|
3
11
|
String result ;
|
@@ -18,6 +26,56 @@
|
|
18
26
|
|
19
27
|
```
|
20
28
|
|
29
|
+
の部分で、実際にはどんなケースでも`result`には何かしらの値が代入されますが、コンパイラは頭が悪いので、
|
30
|
+
|
31
|
+
「どの条件も満たさなかった場合は`result`が初期化されない」と判断してしまいます。
|
32
|
+
|
33
|
+
なので、コンパイラが見ても明らかに初期化されているように書く必要があります。
|
21
34
|
|
22
35
|
|
36
|
+
|
37
|
+
例えば宣言時に適当な値を入れて初期化するか:
|
38
|
+
|
39
|
+
```java
|
40
|
+
|
23
|
-
|
41
|
+
String result == "";
|
42
|
+
|
43
|
+
if (leftCard < rightCard) {
|
44
|
+
|
45
|
+
result = "h" ;
|
46
|
+
|
47
|
+
} else if (leftCard >rightCard ) {
|
48
|
+
|
49
|
+
result = "l";
|
50
|
+
|
51
|
+
} else if ( leftCard == rightCard) {
|
52
|
+
|
53
|
+
result = select ;
|
54
|
+
|
55
|
+
};
|
56
|
+
|
57
|
+
```
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
一番最後の条件をelseにします :
|
62
|
+
|
63
|
+
```java
|
64
|
+
|
65
|
+
String result ;
|
66
|
+
|
67
|
+
if (leftCard < rightCard) {
|
68
|
+
|
69
|
+
result = "h" ;
|
70
|
+
|
71
|
+
} else if (leftCard >rightCard ) {
|
72
|
+
|
73
|
+
result = "l";
|
74
|
+
|
75
|
+
} else {
|
76
|
+
|
77
|
+
result = select ;
|
78
|
+
|
79
|
+
};
|
80
|
+
|
81
|
+
```
|