回答編集履歴

3

main手直し

2016/10/16 14:21

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -69,3 +69,63 @@
69
69
  ```
70
70
 
71
71
  で"1勝1敗"と出力されたのです。
72
+
73
+
74
+
75
+ ---
76
+
77
+
78
+
79
+ ひとまずmainに手を付けると
80
+
81
+ ```java
82
+
83
+ public static void main(String[] args) {
84
+
85
+ int w = 0;
86
+
87
+ int l = 0;
88
+
89
+ boolean cont = true;
90
+
91
+ while (cont) {
92
+
93
+ // xはこの書き方をするためのダミー変数
94
+
95
+ int x = (play3() == 1) ? w++ : l++;
96
+
97
+ boolean check = true;
98
+
99
+ while (check) {
100
+
101
+ System.out.println("続けますか。0:no 1:yes");
102
+
103
+ switch (stdIn.nextInt()){
104
+
105
+ case 0:
106
+
107
+ cont = false;
108
+
109
+ case 1:
110
+
111
+ check = false;
112
+
113
+ break;
114
+
115
+ default:
116
+
117
+ System.out.println("0か1で入力して下さい。");
118
+
119
+ }
120
+
121
+ }
122
+
123
+ }
124
+
125
+ System.out.println(w+"勝"+l+"敗");
126
+
127
+ }
128
+
129
+ ```
130
+
131
+ こんな感じになるのでは?play3メソッドの返り値をbooleanにして判定したいところですが。

2

誤字修正

2016/10/16 14:21

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -1,6 +1,6 @@
1
1
  「うまくいかない」の内容を説明しないとわかりませんよ?
2
2
 
3
- (訂正) wやlを宣言する際にplay3をんでいることが原因です。
3
+ (訂正) wやlを宣言する際にplay3をんでいることが原因です。
4
4
 
5
5
 
6
6
 

1

原因訂正

2016/10/16 12:13

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -1,11 +1,71 @@
1
1
  「うまくいかない」の内容を説明しないとわかりませんよ?
2
2
 
3
- まあおそらく"w"や"l"が参照できないという旨のコンパイルエラーですよね?
4
-
5
- staticメソッドであるmainから**非static変数**のw,lは参照できません。
6
-
7
- こちらもstatic変数にするか、このクラスのインスタンス生成す必要あります。
3
+ (訂正) wやlを宣言する際にplay3読んでいこと原因です。
8
4
 
9
5
 
10
6
 
7
+ ```java
8
+
9
+ int w=play3();
10
+
11
+ ```
12
+
13
+ この宣言により、
14
+
15
+ > 手(0:グー/ 1: テョキ/ 2:パー) ? 0
16
+
17
+ 人:グー
18
+
19
+ コンピュータ:パー
20
+
21
+ コンピュータの勝ち
22
+
23
+ (中略)
24
+
25
+ 3勝2敗で人の勝ちです。
26
+
27
+
28
+
29
+ の部分が行われ、play3()で「最後に人が勝った」ことにより**1が返されます。これがwに代入されます。**
30
+
31
+
32
+
33
+ 次の
34
+
35
+ ```java
36
+
37
+ int l=play3();
38
+
39
+ ```
40
+
41
+ で、再びplay3()が呼び出され、
42
+
43
+ > 手(0:グー/ 1: テョキ/ 2:パー) ? 0
44
+
45
+ 人:グー
46
+
47
+ コンピュータ:グー
48
+
49
+ あいこ
50
+
51
+ (中略)
52
+
53
+ 3勝0敗で人の勝ちです。
54
+
55
+
56
+
57
+ これが出力されます。これも「最後に人が勝った」ことにより**1が返され、lに代入されます。**
58
+
59
+
60
+
11
- いきなりコードで書しても混乱すで、どうう流れにするか1回紙に書いてみては?
61
+ のあの出力がdo-whileに当た部分すが**勝ち数を一切カウントしてません。**
62
+
63
+ 結局、whileを抜けるまでwもlも上書きされず、
64
+
65
+ ```java
66
+
67
+ System.out.println(w+"勝"+l+"敗");
68
+
69
+ ```
70
+
71
+ で"1勝1敗"と出力されたのです。