回答編集履歴

5

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

2018/09/19 09:10

投稿

dice142
dice142

スコア5158

test CHANGED
@@ -86,6 +86,18 @@
86
86
 
87
87
 
88
88
 
89
+ [またまた追記]
90
+
91
+
92
+
93
+ 上記の件に加えて、`&&`の右側でも間違いがありました。
94
+
95
+ そちらは「じゃんけんの結果が勝ち」という条件が来るはずなので、
96
+
97
+ `result`と`S結果.勝ち`を比較する必要があります。
98
+
99
+
100
+
89
101
  ---
90
102
 
91
103
 

4

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

2018/09/19 09:10

投稿

dice142
dice142

スコア5158

test CHANGED
@@ -107,3 +107,59 @@
107
107
  - 判定用変数が1であれば直前の勝者はプレイヤー
108
108
 
109
109
  - 判定用変数が2であれば直前の勝者はCPU
110
+
111
+
112
+
113
+ [更に追記]
114
+
115
+ 上記をご提示いただいたコードのように示すと以下のようになります。
116
+
117
+ ※これでやりたいことができる保証はないです。
118
+
119
+  あくまでも判定用変数の使い方の例です。
120
+
121
+
122
+
123
+ ```java
124
+
125
+ // 前回の勝者を格納する変数
126
+
127
+ int lastWinner = 0;
128
+
129
+
130
+
131
+ /* ...省略... */
132
+
133
+
134
+
135
+ // プレイヤーの2連勝判定
136
+
137
+ if (lastWinner == 1 && S結果.勝ち) {
138
+
139
+ playerPt--;
140
+
141
+ // 前回の勝者のリセット
142
+
143
+ lastWinner = 0;
144
+
145
+ }
146
+
147
+
148
+
149
+ /* ...省略... */
150
+
151
+
152
+
153
+ // CPUの2連勝判定
154
+
155
+ if (lastWinner == 2 && S結果.負け) {
156
+
157
+ cpuPt--;
158
+
159
+ // 前回の勝者のリセット
160
+
161
+ lastWinner = 0;
162
+
163
+ }
164
+
165
+ ```

3

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

2018/09/19 07:09

投稿

dice142
dice142

スコア5158

test CHANGED
@@ -50,6 +50,46 @@
50
50
 
51
51
 
52
52
 
53
+ [更に追記]
54
+
55
+ 提示された1つ目のif文は以下のように書いており、
56
+
57
+
58
+
59
+ ```java
60
+
61
+ if(result == S結果.勝ち) {
62
+
63
+ ```
64
+
65
+
66
+
67
+ 2つ目のif文は以下のように書いています。
68
+
69
+
70
+
71
+ ```java
72
+
73
+ if(winFlag =true && S結果.勝ち) {
74
+
75
+ ```
76
+
77
+
78
+
79
+ 1つ目のif文の`result == S結果.勝ち`と、2つ目のif文の`winFlag =true`はどちらも
80
+
81
+ 「同じかどうか」の比較をしたいようですが、1つ目のif文は正しい比較を行っていて、
82
+
83
+ 2つ目のif文の方は比較の式になっていません。
84
+
85
+ (代入の式になっているので、真偽値になりません。)
86
+
87
+
88
+
89
+ ---
90
+
91
+
92
+
53
93
  [追記2] 2連勝の判定について
54
94
 
55
95
 

2

2連勝判定について追記

2018/09/19 05:37

投稿

dice142
dice142

スコア5158

test CHANGED
@@ -47,3 +47,23 @@
47
47
 
48
48
 
49
49
  - `&&`の左右は必ず真偽値(true/false)である必要があります(true, false, 条件文)
50
+
51
+
52
+
53
+ [追記2] 2連勝の判定について
54
+
55
+
56
+
57
+ 追記されたコードではCPUの2連勝判定ができていません。
58
+
59
+ (プレイヤーのみ2連勝の制約があるのであれば問題ないですが。)
60
+
61
+ CPUにも2連勝判定が必要であればint型で以下のような判定をするなどが必要でしょう。
62
+
63
+
64
+
65
+ - 判定用変数が0であれば直前の勝者なし(一番最初)
66
+
67
+ - 判定用変数が1であれば直前の勝者はプレイヤー
68
+
69
+ - 判定用変数が2であれば直前の勝者はCPU

1

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

2018/09/19 04:24

投稿

dice142
dice142

スコア5158

test CHANGED
@@ -29,3 +29,21 @@
29
29
  - プレイヤーが勝った場合、カウントが0以下であればカウントを1とし、カウントが1以上なら+1を加える
30
30
 
31
31
  - CPUが勝った場合、カウントが0以上であればカウントを-1とし、カウントが-1以下なら-1を加える
32
+
33
+
34
+
35
+ ---
36
+
37
+
38
+
39
+ [追記]「 && のオペランド型が不正です」について
40
+
41
+
42
+
43
+ 2つ目のif文の比較の仕方が1箇所間違っています。
44
+
45
+ 上のif文の条件文と見比べればわかるかと思いますが、以下がヒントです。
46
+
47
+
48
+
49
+ - `&&`の左右は必ず真偽値(true/false)である必要があります(true, false, 条件文)