回答編集履歴

4

問題と思われる記述を追加

2020/03/11 07:01

投稿

jimbe
jimbe

スコア13209

test CHANGED
@@ -34,6 +34,8 @@
34
34
 
35
35
  System.out.println("\nもう一度じゃんけんからだよ!");
36
36
 
37
+ break; //これが必要では?
38
+
37
39
  }
38
40
 
39
41
  }
@@ -42,6 +44,10 @@
42
44
 
43
45
  と纏まります.
44
46
 
47
+ そして, おそらく「もう一度じゃんけんから」となった場合は(3回勝負のカウントを上げずに再度じゃんけんをする為に) あっちむいてほいの while ループを抜けるため break を書かなくてはいけないと思うのですが, case 内では書けませんので, このように纏めたほうがよいのではと思います.
48
+
49
+ また, ご提示のコードの最後にある return 0 は削除しないと, 数字以外や範囲外の数値を入力等の場合に3回勝負のカウントが上がってしまいます.
50
+
45
51
 
46
52
 
47
53
  モロモロ想像・修正すると, 以下の様になりました.

3

コード例追加

2020/03/11 07:01

投稿

jimbe
jimbe

スコア13209

test CHANGED
@@ -2,7 +2,45 @@
2
2
 
3
3
  ご質問の件は, 条件を並べ過ぎてどの場合にどれが表示されるのかが分からなくなっているためと思います.
4
4
 
5
+ 例えば ```switch(pry2) { ~ }``` の部分は
6
+
7
+ ```java
8
+
9
+ if(pry2 < 0 || com2.length < pry2) {
10
+
11
+ System.out.println("範囲外の数字です。0~3で入力してね。");
12
+
13
+ } else {
14
+
5
- pry == 0 com == 0 の場合は... の羅列をよく見ると, pry == com の場合は... とすれば纏められたりします.
15
+ System.out.println(com2[cpu2] + "(COM)と" + "(Player)" + com2[pry2] + "だね");
16
+
17
+ if (pry2 == cpu2) {
18
+
19
+ if(hantei == 1) {
20
+
21
+ System.out.println("あなたの勝ち!");
22
+
23
+ return 1;
24
+
25
+ }else if(hantei == 2) {
26
+
27
+ System.out.println("あなたの負け!");
28
+
29
+ return 0;
30
+
31
+ }
32
+
33
+ } else {
34
+
35
+ System.out.println("\nもう一度じゃんけんからだよ!");
36
+
37
+ }
38
+
39
+ }
40
+
41
+ ```
42
+
43
+ と纏まります.
6
44
 
7
45
 
8
46
 

2

再修正(まだメッセージの流れが変ですが...)

2020/03/11 06:05

投稿

jimbe
jimbe

スコア13209

test CHANGED
@@ -72,6 +72,14 @@
72
72
 
73
73
 
74
74
 
75
+ enum Settlement {
76
+
77
+ NOT_SETTLED, WON, LOST
78
+
79
+ }
80
+
81
+
82
+
75
83
  public class test32 {
76
84
 
77
85
  public static void main(String[] args) {
@@ -94,9 +102,15 @@
94
102
 
95
103
  System.out.println("\n---- " + i + "回戦 ----");
96
104
 
105
+ Settlement settlement;
106
+
107
+ do {
108
+
97
- if(あっちむいてホイ(player, computer, じゃんけん(player, computer))) win++;
109
+ settlement = あっちむいてホイ(player, computer, じゃんけん(player, computer));
98
-
110
+
99
- if(i != game) System.out.println("\nもう一度じゃんけんからだよ!");
111
+ } while(settlement == Settlement.NOT_SETTLED);
112
+
113
+ if(settlement == Settlement.WON) win++;
100
114
 
101
115
  }
102
116
 
@@ -144,7 +158,7 @@
144
158
 
145
159
 
146
160
 
147
- private static boolean あっちむいてホイ(Player player, Computer computer, boolean playerAttack) {
161
+ private static Settlement あっちむいてホイ(Player player, Computer computer, boolean playerAttack) {
148
162
 
149
163
  String[] dirStr = new String[] {"上", "下", "左", "右"};
150
164
 
@@ -162,7 +176,15 @@
162
176
 
163
177
 
164
178
 
179
+ if(pry != cpu) {
180
+
181
+ System.out.println("もう一度じゃんけんからだよ!");
182
+
183
+ return Settlement.NOT_SETTLED;
184
+
185
+ }
186
+
165
- return printResult(playerAttack ? pry == cpu : pry != cpu);
187
+ return printResult(playerAttack) ? Settlement.WON : Settlement.LOST;
166
188
 
167
189
  }
168
190
 

1

「あっちむいてほい」のルールを忘れてましたので修正

2020/03/11 05:50

投稿

jimbe
jimbe

スコア13209

test CHANGED
@@ -94,11 +94,7 @@
94
94
 
95
95
  System.out.println("\n---- " + i + "回戦 ----");
96
96
 
97
- boolean win1 = じゃんけん(player, computer);
97
+ if(あっちむいてホイ(player, computer, じゃんけん(player, computer))) win++;
98
-
99
- boolean win2 = あっちむいてホイ(player, computer);
100
-
101
- if(win1 && win2) win++;
102
98
 
103
99
  if(i != game) System.out.println("\nもう一度じゃんけんからだよ!");
104
100
 
@@ -148,13 +144,13 @@
148
144
 
149
145
 
150
146
 
151
- private static boolean あっちむいてホイ(Player player, Computer computer) {
147
+ private static boolean あっちむいてホイ(Player player, Computer computer, boolean playerAttack) {
152
148
 
153
149
  String[] dirStr = new String[] {"上", "下", "左", "右"};
154
150
 
155
151
 
156
152
 
157
- System.out.println("\n次はあっちむいてホイ!です\n数字で入力してね");
153
+ System.out.println("\n次はあっちむいてホイ!です\nあなたは"+(playerAttack?"攻撃側":"防御側")+"です\n数字で入力してね");
158
154
 
159
155
 
160
156
 
@@ -166,7 +162,7 @@
166
162
 
167
163
 
168
164
 
169
- return printResult(pry != cpu);
165
+ return printResult(playerAttack ? pry == cpu : pry != cpu);
170
166
 
171
167
  }
172
168