質問編集履歴

3

メソッド化、エラー箇所の訂正

2019/08/17 09:55

投稿

a.a
a.a

スコア12

test CHANGED
File without changes
test CHANGED
@@ -18,9 +18,13 @@
18
18
 
19
19
  よろしくお願いします。
20
20
 
21
+ `````````````````````````````````````````````````````````````````````
21
22
 
22
23
 
24
+
25
+
26
+
23
- import java.io.;
27
+ import java.io.BufferedReader;
24
28
 
25
29
  import java.io.IOException;
26
30
 
@@ -30,7 +34,7 @@
30
34
 
31
35
 
32
36
 
33
- public class TakeStone2 {
37
+ public class TakeStone4 {
34
38
 
35
39
  public static void main(String[] args) throws NumberFormatException, IOException {
36
40
 
@@ -38,67 +42,47 @@
38
42
 
39
43
 
40
44
 
41
- BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
45
+ BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
42
46
 
43
47
  System.out.println("石山の数を入力してください。");
44
48
 
45
-
46
49
 
47
50
 
48
-
49
- int stone = 0;
50
-
51
- while(stone >0 )
52
-
53
-
54
-
55
- try {
56
-
57
-
58
-
59
- stone = Integer.parseInt(in.readLine());
51
+ int stone = inputInt(bufferedReader);
60
-
61
-
62
-
63
-
64
-
65
- }catch( IOException e){
66
-
67
-
68
-
69
- System.out.println("数字を入力してください。");
70
-
71
- }
72
-
73
- }
74
52
 
75
53
 
76
54
 
77
55
  System.out.println("一度にとれる石の数を入力してください。");
78
56
 
79
-
57
+ //取れる数の入力
80
58
 
59
+
60
+
61
+
62
+
81
- int take = Integer.parseInt(in.readLine());
63
+ int take = inputInt(bufferedReader);
64
+
65
+
82
66
 
83
67
  System.out.println("石山は、" + stone + "個で");
84
68
 
85
- System.out.println("取れる数は、" + stone + "個で開始です。");
69
+ System.out.println("取れる数は、" + take + "個で開始です。");
86
70
 
87
71
 
88
72
 
89
73
  while(stone > 1) {
90
74
 
91
- Random rand = new Random();
92
75
 
76
+
93
- int partner = rand.nextInt(take) +1 ;
77
+ int partner = takePartner(take, stone);
78
+
79
+
94
80
 
95
81
  stone= stone - partner;
96
82
 
97
83
  System.out.println("相手は"+ partner +"個取り残り"+ stone +"個です。");
98
84
 
99
- //この上の相手が取るブロックをメソッドにしたいです。
100
85
 
101
-
102
86
 
103
87
  int victory = (take+1)- partner ;
104
88
 
@@ -106,9 +90,11 @@
106
90
 
107
91
  System.out.println("自分がとる数を入力して下さい。");
108
92
 
109
- int test = Integer.parseInt(in.readLine());
110
93
 
94
+
111
- return test;
95
+ int me = takeMe(bufferedReader,take);
96
+
97
+
112
98
 
113
99
  stone = stone - me;
114
100
 
@@ -116,11 +102,7 @@
116
102
 
117
103
  }
118
104
 
119
- //この上の自分が取るブロックをメソッドにしたいです。
120
105
 
121
- //また、自分が取る数が最初に決めた数字以上にも入力出来てしまうため、それを修正したいです。
122
-
123
-
124
106
 
125
107
  System.out.println("残り1個で相手に順番を回したのであなたの勝ちです。");
126
108
 
@@ -128,10 +110,80 @@
128
110
 
129
111
 
130
112
 
131
- private static int inputInt(BufferedReadrer in) {
132
113
 
133
-
134
114
 
115
+
116
+
117
+ private static int inputInt(BufferedReader bufferedReader) {
118
+
119
+ int input = 0;
120
+
121
+ while(input == 0) {
122
+
123
+ try {
124
+
125
+ input = Integer.parseInt(bufferedReader.readLine());
126
+
127
+ }catch( NumberFormatException e){
128
+
129
+ System.out.println("数字を入力してください。");
130
+
131
+ }catch( IOException e){
132
+
133
+ System.out.println("数字を入力してください。");
134
+
135
- }
135
+ }
136
+
137
+ }
138
+
139
+ return input;
140
+
141
+ }
142
+
143
+
144
+
145
+
146
+
147
+ private static int takePartner(int take, int stone) {
148
+
149
+
150
+
151
+ Random rand = new Random();
152
+
153
+ int partner = rand.nextInt(take) + 1 ;
154
+
155
+
156
+
157
+ return partner;
158
+
159
+ }
160
+
161
+ private static int takeMe(BufferedReader bufferedReader,int take) {
162
+
163
+
164
+
165
+ int me = take + 1 ;
166
+
167
+ while(me > take) {
168
+
169
+ me = inputInt(bufferedReader);
170
+
171
+ if(me > take) {
172
+
173
+ System.out.println("取れる数を超えています!");
174
+
175
+ System.out.println("再入力してください。");
176
+
177
+ }
178
+
179
+ }
180
+
181
+ return me;
182
+
183
+ }
184
+
185
+
136
186
 
137
187
  }
188
+
189
+ `````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````

2

2019/08/17 09:55

投稿

a.a
a.a

スコア12

test CHANGED
File without changes
test CHANGED
@@ -19,8 +19,6 @@
19
19
  よろしくお願いします。
20
20
 
21
21
 
22
-
23
- ```````````````````````````````````````````````
24
22
 
25
23
  import java.io.;
26
24
 
@@ -60,9 +58,7 @@
60
58
 
61
59
  stone = Integer.parseInt(in.readLine());
62
60
 
63
-
64
-
65
- //readLineは行を読み取る
61
+
66
62
 
67
63
 
68
64
 
@@ -78,11 +74,9 @@
78
74
 
79
75
 
80
76
 
81
-
82
-
83
77
  System.out.println("一度にとれる石の数を入力してください。");
84
78
 
85
- //取れる数の入力
79
+
86
80
 
87
81
  int take = Integer.parseInt(in.readLine());
88
82
 
@@ -102,6 +96,10 @@
102
96
 
103
97
  System.out.println("相手は"+ partner +"個取り残り"+ stone +"個です。");
104
98
 
99
+ //この上の相手が取るブロックをメソッドにしたいです。
100
+
101
+
102
+
105
103
  int victory = (take+1)- partner ;
106
104
 
107
105
  System.out.println("勝つには"+victory+"個取りましょう");
@@ -118,6 +116,12 @@
118
116
 
119
117
  }
120
118
 
119
+ //この上の自分が取るブロックをメソッドにしたいです。
120
+
121
+ //また、自分が取る数が最初に決めた数字以上にも入力出来てしまうため、それを修正したいです。
122
+
123
+
124
+
121
125
  System.out.println("残り1個で相手に順番を回したのであなたの勝ちです。");
122
126
 
123
127
  }
@@ -131,5 +135,3 @@
131
135
  }
132
136
 
133
137
  }
134
-
135
- ```````````````````````````````````````````````

1

2019/08/17 00:03

投稿

a.a
a.a

スコア12

test CHANGED
File without changes
test CHANGED
@@ -19,6 +19,8 @@
19
19
  よろしくお願いします。
20
20
 
21
21
 
22
+
23
+ ```````````````````````````````````````````````
22
24
 
23
25
  import java.io.;
24
26
 
@@ -129,3 +131,5 @@
129
131
  }
130
132
 
131
133
  }
134
+
135
+ ```````````````````````````````````````````````