質問編集履歴

4

打率を出塁率に修正

2020/01/03 07:55

投稿

Keita222
Keita222

スコア8

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- Javaで、データの各選手の率を出力したいと思っています。
3
+ Javaで、データの各選手の出塁率を出力したいと思っています。
4
4
 
5
5
  データの一部は下記のような感じです。
6
6
 
@@ -20,13 +20,13 @@
20
20
 
21
21
  それぞれの打席の結果などが一行に示されています。
22
22
 
23
- ,で区切り、4行目が打者選手のID、16行目の数字(0か1)がアウトかヒットかを示しています。
23
+ ,で区切り、4行目が打者選手のID、16行目の数字(0か1)がアウトか出塁したかを示しています。
24
-
24
+
25
- 0がアウトで1がヒットです。
25
+ 0がアウトで1が出塁です。
26
-
26
+
27
- 四球や犠牲フライなど打数入らない打席のデータはあらかじめ除いているのでそこは考慮しなくて大丈夫です。
27
+ 犠牲フライなど出塁率関係ない打席のデータはあらかじめ除いているのでそこは考慮しなくて大丈夫です。
28
-
28
+
29
- これをもとに各選手ごとの率を出力するというのが目的です。
29
+ これをもとに各選手ごとの出塁率を出力するというのが目的です。
30
30
 
31
31
  出力例は下記のような感じです。
32
32
 
@@ -40,7 +40,7 @@
40
40
 
41
41
 
42
42
 
43
- ソースコードは、対戦投手別の打者率を出力するプログラムです。
43
+ ソースコードは、対戦投手別の打者出塁率を出力するプログラムです。
44
44
 
45
45
  これをどう変えれば、投手別ではなく打者の打率になりますか?
46
46
 

3

タイトルを変更

2020/01/03 07:54

投稿

Keita222
Keita222

スコア8

test CHANGED
@@ -1 +1 @@
1
- Javaで、データの各選手の打率出力したい
1
+ Javaで、データを計算したいのですが
test CHANGED
File without changes

2

フレームの表示を誤っていたため改善

2020/01/02 07:18

投稿

Keita222
Keita222

スコア8

test CHANGED
File without changes
test CHANGED
@@ -48,230 +48,220 @@
48
48
 
49
49
 
50
50
 
51
- ### 発生している問題・エラメッセ
51
+ ### 該当のソスコ
52
+
53
+
54
+
52
-
55
+ ```ここに言語名を入力
56
+
53
-
57
+ package ○○○○;
58
+
59
+
60
+
61
+ import java.io.BufferedReader;
62
+
63
+ import java.io.FileReader;
64
+
65
+ import java.io.IOException;
66
+
67
+ import java.io.PrintStream;
68
+
69
+ import java.util.ArrayList;
70
+
71
+ import java.util.Collections;
72
+
73
+ import java.util.HashMap;
74
+
75
+ import java.util.List;
76
+
77
+ import java.util.Map;
78
+
79
+
80
+
81
+ public class EvaConv {
82
+
83
+
84
+
85
+ public static void main(String[] args) {
86
+
87
+ try {
88
+
89
+ PlayerMatrix.read("ファイル名.EVA").writeTo(System.out);
90
+
91
+ } catch(IOException e) {
92
+
93
+ e.printStackTrace();
94
+
95
+ }
96
+
97
+ }
98
+
99
+
100
+
101
+ private static class PlayerMatrix {
102
+
103
+ List<String> rowList = new ArrayList<>();
104
+
105
+ List<String> columnList = new ArrayList<>();
106
+
107
+ Map<String,List<Integer>> map = new HashMap<>();
108
+
109
+
110
+
111
+ // value: ヒット,アウト?
112
+
113
+ void put(String row, String column, int value) {
114
+
115
+ String key =makeKey(row, column);
116
+
117
+ if(map.containsKey(key)) {
118
+
119
+ map.get(key).add(value);
120
+
121
+ } else {
122
+
123
+ if(!rowList.contains(row)) rowList.add(row);
124
+
125
+ if(!columnList.contains(column)) columnList.add(column);
126
+
127
+ List<Integer> valueList = new ArrayList<>();
128
+
129
+ valueList.add(value);
130
+
131
+ map.put(key, valueList);
132
+
133
+ }
134
+
135
+ }
136
+
137
+ String[] getRows() {
138
+
139
+ return rowList.toArray(new String[rowList.size()]);
140
+
141
+ }
142
+
143
+ String[] getColumns() {
144
+
145
+ return columnList.toArray(new String[columnList.size()]);
146
+
147
+ }
148
+
149
+ // return: データが無ければ Collections.emptyList() を返す
150
+
151
+ List<Integer> get(String row, String column) {
152
+
153
+ List<Integer> values = map.get(makeKey(row, column));
154
+
155
+ if(values != null) return values;
156
+
157
+ return Collections.emptyList();
158
+
159
+ }
160
+
161
+ private String makeKey(String row, String column) {
162
+
163
+ return row + "$$$" + column;
164
+
165
+ }
166
+
167
+
168
+
169
+ void writeTo(PrintStream out) {
170
+
171
+ String[] columns = getColumns();
172
+
173
+ for(String column : columns) {
174
+
175
+ out.print(","+column);
176
+
177
+ }
178
+
179
+ out.println();
180
+
181
+
182
+
183
+ String[] rows = getRows();
184
+
185
+ for(String row : rows) {
186
+
187
+ out.print(row);
188
+
189
+ for(String column : columns) {
190
+
191
+ out.print(",");
192
+
193
+ List<Integer> values = get(row, column);
194
+
195
+ double count = 0;
196
+
197
+ double hit = 0;
198
+
199
+ for(int i=0; i<values.size(); i++) {
200
+
201
+ if(values.get(i) == 0 || values.get(i) == 1) {
202
+
203
+ count = count + 1;
204
+
205
+ if(values.get(i) == 1) {
206
+
207
+ hit = hit + 1;
208
+
209
+ }
210
+
211
+ }
212
+
213
+ }
214
+
215
+ if(count != 0){
216
+
217
+ out.print(hit / count);
218
+
219
+ }
220
+
221
+ }
222
+
223
+ out.println();
224
+
225
+ }
226
+
227
+ }
228
+
229
+
230
+
231
+ static PlayerMatrix read(String filename) throws IOException {
232
+
233
+ try(BufferedReader br = new BufferedReader(new FileReader(filename));) {
234
+
235
+ PlayerMatrix matrix = new PlayerMatrix();
236
+
237
+ String line;
238
+
239
+ while((line = br.readLine()) != null) {
240
+
241
+ String[] tokens = line.split(",");
242
+
243
+ String row = tokens[3]; //打者
244
+
245
+ String column = tokens[14]; //投手
246
+
247
+ int value = Integer.parseInt(tokens[16]); //出塁したかどうか
248
+
249
+ matrix.put(row, column, value);
250
+
251
+ }
252
+
253
+ return matrix;
254
+
255
+ }
256
+
257
+ }
258
+
259
+ }
260
+
261
+ }
54
262
 
55
263
  ```
56
264
 
57
- ```
58
-
59
-
60
-
61
- ### 該当のソースコード
62
-
63
-
64
-
65
- ```ここに言語名を入力
66
-
67
- package ○○○○;
68
-
69
-
70
-
71
- import java.io.BufferedReader;
72
-
73
- import java.io.FileReader;
74
-
75
- import java.io.IOException;
76
-
77
- import java.io.PrintStream;
78
-
79
- import java.util.ArrayList;
80
-
81
- import java.util.Collections;
82
-
83
- import java.util.HashMap;
84
-
85
- import java.util.List;
86
-
87
- import java.util.Map;
88
-
89
-
90
-
91
- public class EvaConv {
92
-
93
-
94
-
95
- public static void main(String[] args) {
96
-
97
- try {
98
-
99
- PlayerMatrix.read("ファイル名.EVA").writeTo(System.out);
100
-
101
- } catch(IOException e) {
102
-
103
- e.printStackTrace();
104
-
105
- }
106
-
107
- }
108
-
109
-
110
-
111
- private static class PlayerMatrix {
112
-
113
- List<String> rowList = new ArrayList<>();
114
-
115
- List<String> columnList = new ArrayList<>();
116
-
117
- Map<String,List<Integer>> map = new HashMap<>();
118
-
119
-
120
-
121
- // value: ヒット,アウト?
122
-
123
- void put(String row, String column, int value) {
124
-
125
- String key =makeKey(row, column);
126
-
127
- if(map.containsKey(key)) {
128
-
129
- map.get(key).add(value);
130
-
131
- } else {
132
-
133
- if(!rowList.contains(row)) rowList.add(row);
134
-
135
- if(!columnList.contains(column)) columnList.add(column);
136
-
137
- List<Integer> valueList = new ArrayList<>();
138
-
139
- valueList.add(value);
140
-
141
- map.put(key, valueList);
142
-
143
- }
144
-
145
- }
146
-
147
- String[] getRows() {
148
-
149
- return rowList.toArray(new String[rowList.size()]);
150
-
151
- }
152
-
153
- String[] getColumns() {
154
-
155
- return columnList.toArray(new String[columnList.size()]);
156
-
157
- }
158
-
159
- // return: データが無ければ Collections.emptyList() を返す
160
-
161
- List<Integer> get(String row, String column) {
162
-
163
- List<Integer> values = map.get(makeKey(row, column));
164
-
165
- if(values != null) return values;
166
-
167
- return Collections.emptyList();
168
-
169
- }
170
-
171
- private String makeKey(String row, String column) {
172
-
173
- return row + "$$$" + column;
174
-
175
- }
176
-
177
-
178
-
179
- void writeTo(PrintStream out) {
180
-
181
- String[] columns = getColumns();
182
-
183
- for(String column : columns) {
184
-
185
- out.print(","+column);
186
-
187
- }
188
-
189
- out.println();
190
-
191
-
192
-
193
- String[] rows = getRows();
194
-
195
- for(String row : rows) {
196
-
197
- out.print(row);
198
-
199
- for(String column : columns) {
200
-
201
- out.print(",");
202
-
203
- List<Integer> values = get(row, column);
204
-
205
- double count = 0;
206
-
207
- double hit = 0;
208
-
209
- for(int i=0; i<values.size(); i++) {
210
-
211
- if(values.get(i) == 0 || values.get(i) == 1) {
212
-
213
- count = count + 1;
214
-
215
- if(values.get(i) == 1) {
216
-
217
- hit = hit + 1;
218
-
219
- }
220
-
221
- }
222
-
223
- }
224
-
225
- if(count != 0){
226
-
227
- out.print(hit / count);
228
-
229
- }
230
-
231
- }
232
-
233
- out.println();
234
-
235
- }
236
-
237
- }
238
-
239
-
240
-
241
- static PlayerMatrix read(String filename) throws IOException {
242
-
243
- try(BufferedReader br = new BufferedReader(new FileReader(filename));) {
244
-
245
- PlayerMatrix matrix = new PlayerMatrix();
246
-
247
- String line;
248
-
249
- while((line = br.readLine()) != null) {
250
-
251
- String[] tokens = line.split(",");
252
-
253
- String row = tokens[3]; //打者
254
-
255
- String column = tokens[14]; //投手
256
-
257
- int value = Integer.parseInt(tokens[16]); //出塁したかどうか
258
-
259
- matrix.put(row, column, value);
260
-
261
- }
262
-
263
- return matrix;
264
-
265
- }
266
-
267
- }
268
-
269
- }
270
-
271
- }
272
-
273
- ```
274
-
275
265
 
276
266
 
277
267
  ### 試したこと

1

ソースコードを追記した

2020/01/02 07:07

投稿

Keita222
Keita222

スコア8

test CHANGED
File without changes
test CHANGED
@@ -40,10 +40,246 @@
40
40
 
41
41
 
42
42
 
43
+ ソースコードは、対戦投手別の打者打率を出力するプログラムです。
44
+
45
+ これをどう変えれば、投手別ではなく打者の打率になりますか?
46
+
43
47
  教えてもらえると助かります。
44
48
 
45
49
 
46
50
 
51
+ ### 発生している問題・エラーメッセージ
52
+
53
+
54
+
55
+ ```
56
+
57
+ ```
58
+
59
+
60
+
61
+ ### 該当のソースコード
62
+
63
+
64
+
65
+ ```ここに言語名を入力
66
+
67
+ package ○○○○;
68
+
69
+
70
+
71
+ import java.io.BufferedReader;
72
+
73
+ import java.io.FileReader;
74
+
75
+ import java.io.IOException;
76
+
77
+ import java.io.PrintStream;
78
+
79
+ import java.util.ArrayList;
80
+
81
+ import java.util.Collections;
82
+
83
+ import java.util.HashMap;
84
+
85
+ import java.util.List;
86
+
87
+ import java.util.Map;
88
+
89
+
90
+
91
+ public class EvaConv {
92
+
93
+
94
+
95
+ public static void main(String[] args) {
96
+
97
+ try {
98
+
99
+ PlayerMatrix.read("ファイル名.EVA").writeTo(System.out);
100
+
101
+ } catch(IOException e) {
102
+
103
+ e.printStackTrace();
104
+
105
+ }
106
+
107
+ }
108
+
109
+
110
+
111
+ private static class PlayerMatrix {
112
+
113
+ List<String> rowList = new ArrayList<>();
114
+
115
+ List<String> columnList = new ArrayList<>();
116
+
117
+ Map<String,List<Integer>> map = new HashMap<>();
118
+
119
+
120
+
121
+ // value: ヒット,アウト?
122
+
123
+ void put(String row, String column, int value) {
124
+
125
+ String key =makeKey(row, column);
126
+
127
+ if(map.containsKey(key)) {
128
+
129
+ map.get(key).add(value);
130
+
131
+ } else {
132
+
133
+ if(!rowList.contains(row)) rowList.add(row);
134
+
135
+ if(!columnList.contains(column)) columnList.add(column);
136
+
137
+ List<Integer> valueList = new ArrayList<>();
138
+
139
+ valueList.add(value);
140
+
141
+ map.put(key, valueList);
142
+
143
+ }
144
+
145
+ }
146
+
147
+ String[] getRows() {
148
+
149
+ return rowList.toArray(new String[rowList.size()]);
150
+
151
+ }
152
+
153
+ String[] getColumns() {
154
+
155
+ return columnList.toArray(new String[columnList.size()]);
156
+
157
+ }
158
+
159
+ // return: データが無ければ Collections.emptyList() を返す
160
+
161
+ List<Integer> get(String row, String column) {
162
+
163
+ List<Integer> values = map.get(makeKey(row, column));
164
+
165
+ if(values != null) return values;
166
+
167
+ return Collections.emptyList();
168
+
169
+ }
170
+
171
+ private String makeKey(String row, String column) {
172
+
173
+ return row + "$$$" + column;
174
+
175
+ }
176
+
177
+
178
+
179
+ void writeTo(PrintStream out) {
180
+
181
+ String[] columns = getColumns();
182
+
183
+ for(String column : columns) {
184
+
185
+ out.print(","+column);
186
+
187
+ }
188
+
189
+ out.println();
190
+
191
+
192
+
193
+ String[] rows = getRows();
194
+
195
+ for(String row : rows) {
196
+
197
+ out.print(row);
198
+
199
+ for(String column : columns) {
200
+
201
+ out.print(",");
202
+
203
+ List<Integer> values = get(row, column);
204
+
205
+ double count = 0;
206
+
207
+ double hit = 0;
208
+
209
+ for(int i=0; i<values.size(); i++) {
210
+
211
+ if(values.get(i) == 0 || values.get(i) == 1) {
212
+
213
+ count = count + 1;
214
+
215
+ if(values.get(i) == 1) {
216
+
217
+ hit = hit + 1;
218
+
219
+ }
220
+
221
+ }
222
+
223
+ }
224
+
225
+ if(count != 0){
226
+
227
+ out.print(hit / count);
228
+
229
+ }
230
+
231
+ }
232
+
233
+ out.println();
234
+
235
+ }
236
+
237
+ }
238
+
239
+
240
+
241
+ static PlayerMatrix read(String filename) throws IOException {
242
+
243
+ try(BufferedReader br = new BufferedReader(new FileReader(filename));) {
244
+
245
+ PlayerMatrix matrix = new PlayerMatrix();
246
+
247
+ String line;
248
+
249
+ while((line = br.readLine()) != null) {
250
+
251
+ String[] tokens = line.split(",");
252
+
253
+ String row = tokens[3]; //打者
254
+
255
+ String column = tokens[14]; //投手
256
+
257
+ int value = Integer.parseInt(tokens[16]); //出塁したかどうか
258
+
259
+ matrix.put(row, column, value);
260
+
261
+ }
262
+
263
+ return matrix;
264
+
265
+ }
266
+
267
+ }
268
+
269
+ }
270
+
271
+ }
272
+
273
+ ```
274
+
275
+
276
+
277
+ ### 試したこと
278
+
279
+
280
+
281
+ 投手の考慮せずに改良しようと思ったが、どこを変えれば良いのか分からなかった…。
282
+
47
283
 
48
284
 
49
285
  ### 補足情報(FW/ツールのバージョンなど)