質問編集履歴
3
コード変更
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
javaでの表の作成
|
test
CHANGED
@@ -1,14 +1,6 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
2
|
|
3
|
-
テキストファイルの情報を読み込みそれを基に、
|
3
|
+
テキストファイルの情報を読み込みそれを基に、表を作成。
|
4
|
-
|
5
|
-
また、条件として、
|
6
|
-
|
7
|
-
①項目名は中央揃え、名前は左揃え、点数は右寄せ
|
8
|
-
|
9
|
-
②テキストファイルの情報は追加されることも考慮する
|
10
|
-
|
11
|
-
③最大文字数に合わせて列の幅を調整
|
12
4
|
|
13
5
|
|
14
6
|
|
@@ -20,19 +12,7 @@
|
|
20
12
|
|
21
13
|
|
22
14
|
|
23
|
-
・CUI
|
24
15
|
|
25
|
-
| 名前 | 国語 | 数学 |
|
26
|
-
|
27
|
-
+----------------------------------+
|
28
|
-
|
29
|
-
|田中ゆうき | 80| |
|
30
|
-
|
31
|
-
+---------------------------------+
|
32
|
-
|
33
|
-
|佐藤かつひこ | | 50|
|
34
|
-
|
35
|
-
+----------------------------------+
|
36
16
|
|
37
17
|
|
38
18
|
|
@@ -47,30 +27,6 @@
|
|
47
27
|
エラーメッセージ
|
48
28
|
|
49
29
|
|
50
|
-
|
51
|
-
現在以下のように表示されています。
|
52
|
-
|
53
|
-
横の"-"を行の最大まで繰り返す方法、
|
54
|
-
|
55
|
-
また、該当の科目欄に点数を表示させたいのですが、
|
56
|
-
|
57
|
-
CSVファイル読み取りのまま表示させることしかできず、手詰まりの状態です。
|
58
|
-
|
59
|
-
どなたかご教授頂けないでしょうか。
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|名前 |国語|数学|
|
66
|
-
|
67
|
-
-
|
68
|
-
|
69
|
-
|田中ゆうき |国語| 80|
|
70
|
-
|
71
|
-
-
|
72
|
-
|
73
|
-
|佐藤かつひこ|数学| 50|
|
74
30
|
|
75
31
|
```
|
76
32
|
|
@@ -126,237 +82,13 @@
|
|
126
82
|
|
127
83
|
|
128
84
|
|
129
|
-
|
85
|
+
|
130
|
-
|
131
|
-
writeTable(data);
|
132
86
|
|
133
87
|
}
|
134
88
|
|
135
89
|
|
136
90
|
|
137
|
-
//1行目の縦方向の表示
|
138
|
-
|
139
|
-
public static void drawTable( String[][] data ) {
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
int[] max = maxWidth( data );
|
144
|
-
|
145
|
-
for( int i = 0; i < 1; i++ ) {
|
146
|
-
|
147
|
-
drawLine( data[i], max );
|
148
|
-
|
149
|
-
System.out.print( "|" );
|
150
|
-
|
151
|
-
System.out.println();
|
152
|
-
|
153
|
-
System.out.print("-");
|
154
|
-
|
155
|
-
System.out.println();
|
156
|
-
|
157
|
-
}
|
158
|
-
|
159
|
-
}
|
160
|
-
|
161
91
|
|
162
|
-
|
163
|
-
//1行目の横方向の表示
|
164
|
-
|
165
|
-
private static void drawLine( String[] line, int[] max ) {
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
//1行目を中央揃え
|
170
|
-
|
171
|
-
for( int j = 0; j < line.length; j++ ) {
|
172
|
-
|
173
|
-
int s = ( max[j] - count( line[j] ) );
|
174
|
-
|
175
|
-
int s1, s2;
|
176
|
-
|
177
|
-
if( (s % 2) == 0 ) {
|
178
|
-
|
179
|
-
s1 = s2 = s/2;
|
180
|
-
|
181
|
-
} else {
|
182
|
-
|
183
|
-
s1 = s/2 + 1; s2 = s/2;
|
184
|
-
|
185
|
-
}
|
186
|
-
|
187
|
-
System.out.print( "|" );
|
188
|
-
|
189
|
-
for( int k = 1; k <= s1; k++ ) {
|
190
|
-
|
191
|
-
System.out.print( " " );
|
192
|
-
|
193
|
-
}
|
194
|
-
|
195
|
-
System.out.print( line[j] );
|
196
|
-
|
197
|
-
for( int k = max[j] - s2; k < max[j]; k++ ) {
|
198
|
-
|
199
|
-
System.out.print( " " );
|
200
|
-
|
201
|
-
}
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
}
|
206
|
-
|
207
|
-
}
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
//2行目以降の縦方向の表示
|
212
|
-
|
213
|
-
public static void writeTable( String[][] data ) {
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
int[] max = maxWidth( data );
|
218
|
-
|
219
|
-
for( int i = 1; i < data.length; i++ ) {
|
220
|
-
|
221
|
-
writeLine( data[i], max );
|
222
|
-
|
223
|
-
System.out.print( "|" );
|
224
|
-
|
225
|
-
System.out.println();
|
226
|
-
|
227
|
-
System.out.print("-");
|
228
|
-
|
229
|
-
System.out.println();
|
230
|
-
|
231
|
-
}
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
}
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
//2行目以降の横方向の表示
|
240
|
-
|
241
|
-
private static void writeLine( String[] line, int[] max ) {
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
//1列目を左寄せ
|
246
|
-
|
247
|
-
for( int j = 0; j < 1; j++ ) {
|
248
|
-
|
249
|
-
System.out.print( "|" + line[j] );
|
250
|
-
|
251
|
-
for( int k=count( line[j] ) + 1; k <= max[j]; k++ ) {
|
252
|
-
|
253
|
-
System.out.print( " " );
|
254
|
-
|
255
|
-
}
|
256
|
-
|
257
|
-
}
|
258
|
-
|
259
|
-
//2列目以降を右寄せ
|
260
|
-
|
261
|
-
for( int j = 1; j < line.length; j++ ) {
|
262
|
-
|
263
|
-
System.out.print( "|" );
|
264
|
-
|
265
|
-
for( int k=count( line[j] ) + 1; k <= max[j]; k++ ) {
|
266
|
-
|
267
|
-
System.out.print( " " );
|
268
|
-
|
269
|
-
}
|
270
|
-
|
271
|
-
System.out.print( line[j] );
|
272
|
-
|
273
|
-
}
|
274
|
-
|
275
|
-
}
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
//列の幅の最大を求める
|
282
|
-
|
283
|
-
private static int[] maxWidth( String[][] data ) {
|
284
|
-
|
285
|
-
int[] max = new int[ data[0].length ];
|
286
|
-
|
287
|
-
for( int j = 0; j < data[0].length; j++ ) {
|
288
|
-
|
289
|
-
max[j] = 0;
|
290
|
-
|
291
|
-
for( int i = 0; i < data.length; i++ ) {
|
292
|
-
|
293
|
-
int n = count( data[i][j] );
|
294
|
-
|
295
|
-
if( n > max[j] ) {
|
296
|
-
|
297
|
-
max[j] = n;
|
298
|
-
|
299
|
-
}
|
300
|
-
|
301
|
-
}
|
302
|
-
|
303
|
-
}
|
304
|
-
|
305
|
-
return max;
|
306
|
-
|
307
|
-
}
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
//英数字、カタカナ、ひらがな、漢字の文字コードを分類する
|
312
|
-
|
313
|
-
public static int count( String str ) {
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
int count = 0;
|
318
|
-
|
319
|
-
char[] a = str.toCharArray();
|
320
|
-
|
321
|
-
for( int i=0; i<str.length(); i++ ) {
|
322
|
-
|
323
|
-
if( Character.UnicodeBlock.of( a[i] ).equals
|
324
|
-
|
325
|
-
( Character.UnicodeBlock.BASIC_LATIN ) ) {
|
326
|
-
|
327
|
-
count++;
|
328
|
-
|
329
|
-
}
|
330
|
-
|
331
|
-
else if( Character.UnicodeBlock.of( a[i] ).equals
|
332
|
-
|
333
|
-
( Character.UnicodeBlock.KATAKANA ) ) {
|
334
|
-
|
335
|
-
count+=2;
|
336
|
-
|
337
|
-
}
|
338
|
-
|
339
|
-
else if( Character.UnicodeBlock.of( a[i] ).equals
|
340
|
-
|
341
|
-
( Character.UnicodeBlock.HIRAGANA ) ) {
|
342
|
-
|
343
|
-
count+=2;
|
344
|
-
|
345
|
-
}
|
346
|
-
|
347
|
-
else if( Character.UnicodeBlock.of( a[i] ).equals
|
348
|
-
|
349
|
-
( Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS) ) {
|
350
|
-
|
351
|
-
count+=2;
|
352
|
-
|
353
|
-
}
|
354
|
-
|
355
|
-
}
|
356
|
-
|
357
|
-
return count;
|
358
|
-
|
359
|
-
}
|
360
92
|
|
361
93
|
|
362
94
|
|
2
質問タイトルの変更
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
テーブルに合わせてハイフンを連続して表示させたい
|
test
CHANGED
File without changes
|
1
書式の改善
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
2
|
|
3
|
-
|
4
|
-
|
5
3
|
テキストファイルの情報を読み込みそれを基に、以下のような表を作りたいです。
|
6
4
|
|
7
5
|
また、条件として、
|
@@ -74,7 +72,7 @@
|
|
74
72
|
|
75
73
|
|佐藤かつひこ|数学| 50|
|
76
74
|
|
77
|
-
|
75
|
+
```
|
78
76
|
|
79
77
|
|
80
78
|
|
@@ -84,8 +82,6 @@
|
|
84
82
|
|
85
83
|
```java
|
86
84
|
|
87
|
-
|
88
|
-
|
89
85
|
class Sample {
|
90
86
|
|
91
87
|
|