質問するログイン新規登録

回答編集履歴

5

オペランド型が不正ですの指摘ミスを修正

2018/09/19 09:10

投稿

dice142
dice142

スコア5158

answer CHANGED
@@ -42,6 +42,12 @@
42
42
  2つ目のif文の方は比較の式になっていません。
43
43
  (代入の式になっているので、真偽値になりません。)
44
44
 
45
+ [またまた追記]
46
+
47
+ 上記の件に加えて、`&&`の右側でも間違いがありました。
48
+ そちらは「じゃんけんの結果が勝ち」という条件が来るはずなので、
49
+ `result`と`S結果.勝ち`を比較する必要があります。
50
+
45
51
  ---
46
52
 
47
53
  [追記2] 2連勝の判定について

4

判定用変数の使い方を追記

2018/09/19 09:10

投稿

dice142
dice142

スコア5158

answer CHANGED
@@ -52,4 +52,32 @@
52
52
 
53
53
  - 判定用変数が0であれば直前の勝者なし(一番最初)
54
54
  - 判定用変数が1であれば直前の勝者はプレイヤー
55
- - 判定用変数が2であれば直前の勝者はCPU
55
+ - 判定用変数が2であれば直前の勝者はCPU
56
+
57
+ [更に追記]
58
+ 上記をご提示いただいたコードのように示すと以下のようになります。
59
+ ※これでやりたいことができる保証はないです。
60
+  あくまでも判定用変数の使い方の例です。
61
+
62
+ ```java
63
+ // 前回の勝者を格納する変数
64
+ int lastWinner = 0;
65
+
66
+ /* ...省略... */
67
+
68
+ // プレイヤーの2連勝判定
69
+ if (lastWinner == 1 && S結果.勝ち) {
70
+ playerPt--;
71
+ // 前回の勝者のリセット
72
+ lastWinner = 0;
73
+ }
74
+
75
+ /* ...省略... */
76
+
77
+ // CPUの2連勝判定
78
+ if (lastWinner == 2 && S結果.負け) {
79
+ cpuPt--;
80
+ // 前回の勝者のリセット
81
+ lastWinner = 0;
82
+ }
83
+ ```

3

if文の間違いについて追記

2018/09/19 07:09

投稿

dice142
dice142

スコア5158

answer CHANGED
@@ -24,6 +24,26 @@
24
24
 
25
25
  - `&&`の左右は必ず真偽値(true/false)である必要があります(true, false, 条件文)
26
26
 
27
+ [更に追記]
28
+ 提示された1つ目のif文は以下のように書いており、
29
+
30
+ ```java
31
+ if(result == S結果.勝ち) {
32
+ ```
33
+
34
+ 2つ目のif文は以下のように書いています。
35
+
36
+ ```java
37
+ if(winFlag =true && S結果.勝ち) {
38
+ ```
39
+
40
+ 1つ目のif文の`result == S結果.勝ち`と、2つ目のif文の`winFlag =true`はどちらも
41
+ 「同じかどうか」の比較をしたいようですが、1つ目のif文は正しい比較を行っていて、
42
+ 2つ目のif文の方は比較の式になっていません。
43
+ (代入の式になっているので、真偽値になりません。)
44
+
45
+ ---
46
+
27
47
  [追記2] 2連勝の判定について
28
48
 
29
49
  追記されたコードではCPUの2連勝判定ができていません。

2

2連勝判定について追記

2018/09/19 05:37

投稿

dice142
dice142

スコア5158

answer CHANGED
@@ -22,4 +22,14 @@
22
22
  2つ目のif文の比較の仕方が1箇所間違っています。
23
23
  上のif文の条件文と見比べればわかるかと思いますが、以下がヒントです。
24
24
 
25
- - `&&`の左右は必ず真偽値(true/false)である必要があります(true, false, 条件文)
25
+ - `&&`の左右は必ず真偽値(true/false)である必要があります(true, false, 条件文)
26
+
27
+ [追記2] 2連勝の判定について
28
+
29
+ 追記されたコードではCPUの2連勝判定ができていません。
30
+ (プレイヤーのみ2連勝の制約があるのであれば問題ないですが。)
31
+ CPUにも2連勝判定が必要であればint型で以下のような判定をするなどが必要でしょう。
32
+
33
+ - 判定用変数が0であれば直前の勝者なし(一番最初)
34
+ - 判定用変数が1であれば直前の勝者はプレイヤー
35
+ - 判定用変数が2であれば直前の勝者はCPU

1

質問文追記により回答追加

2018/09/19 04:24

投稿

dice142
dice142

スコア5158

answer CHANGED
@@ -13,4 +13,13 @@
13
13
  また、じゃんけんの人数が2人だけの場合、どちらかを基準にしておけばカウントする変数だけで済みそうです。
14
14
 
15
15
  - プレイヤーが勝った場合、カウントが0以下であればカウントを1とし、カウントが1以上なら+1を加える
16
- - CPUが勝った場合、カウントが0以上であればカウントを-1とし、カウントが-1以下なら-1を加える
16
+ - CPUが勝った場合、カウントが0以上であればカウントを-1とし、カウントが-1以下なら-1を加える
17
+
18
+ ---
19
+
20
+ [追記]「 && のオペランド型が不正です」について
21
+
22
+ 2つ目のif文の比較の仕方が1箇所間違っています。
23
+ 上のif文の条件文と見比べればわかるかと思いますが、以下がヒントです。
24
+
25
+ - `&&`の左右は必ず真偽値(true/false)である必要があります(true, false, 条件文)