teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

6

補足

2018/02/11 11:01

投稿

umyu
umyu

スコア5846

answer CHANGED
@@ -3,7 +3,7 @@
3
3
  ```
4
4
  を`while`文の上で宣言していて。
5
5
  各処理でファイルの次の行を読み取る処理`br#readline()`を行っている箇所はありますが、
6
- ファイルの先頭行から読み直す処理(`br#reset() `など)が無いので正常な動作だと思いますが。。。
6
+ ファイルの先頭行から読み直す処理(`br#reset() `など)が無いのでファイルを最後まで読み切ったら、次`br#readline()`を行っても読むデータが無いのでデータが表示されないのは正常な動作だと思いますが。。。
7
7
 
8
8
  ■問題点
9
9
  1,変数brを各処理で使いまわしている。面倒でも各処理でスコープを1個切って以下のようにすれば問題は発生しないはずです。

5

追記

2018/02/11 11:01

投稿

umyu
umyu

スコア5846

answer CHANGED
@@ -2,23 +2,33 @@
2
2
  BufferedReader br = new BufferedReader(new FileReader(csv));
3
3
  ```
4
4
  を`while`文の上で宣言していて。
5
- 各処理で`br#readline()`ている箇所はありますが、
5
+ 各処理でファイルの次の行を読み取る処理`br#readline()`を行っている箇所はありますが、
6
- ファイルの先頭行から読み直す処理(`br#reset() `など)が無いので正常な動作だと思いますが。。。
6
+ ファイルの先頭行から読み直す処理(`br#reset() `など)が無いので正常な動作だと思いますが。。。
7
7
 
8
8
  ■問題点
9
9
  1,変数brを各処理で使いまわしている。面倒でも各処理でスコープを1個切って以下のようにすれば問題は発生しないはずです。
10
10
  ```
11
11
  {//←ブロックスコープを切る
12
12
  BufferedReader br = new BufferedReader(new FileReader(csv));
13
- // case文で行っていること。
13
+ // case文で行っていること。
14
14
  }
15
15
  ```
16
16
  2,`main`メソッドという一つのメソッド内で一覧表示、検索、登録と処理を行いすぎです。。
17
17
  そのため、どの機能が原因で今回のバグが発生したのかの問題の切り分けが不可能な状態になりやすいです。
18
18
  このソースコードを読む人のために機能単位にまず関数を作成しましょう。
19
+
19
20
  3,ファイルの`close`忘れを防ぐために`try~with~resources`文を使ってくださいな。
20
21
  ```Java
21
22
  try(BufferedReader br = new BufferedReader(new FileReader(csv))) {
22
23
  // やりたいこと。
23
24
  }
24
- ```
25
+ ```
26
+
27
+ 4,例外が発生した時は標準出力`System.out`ではなく、`System.err`に出力してくださいな。
28
+
29
+ ■補足
30
+ 質問する時は
31
+ 1,問題を再現させるための手順を詳しく記載してくださいな。
32
+ 2,「期待される結果」を質問文に記載してくださいな。
33
+ 3,プログラム内ファイルを使用しているなら、ファイルのサンプルデータも追記してくださいな。
34
+ 要望が多いですが、明確な質問だと返答も速く帰ってきます。

4

補足

2018/02/11 10:59

投稿

umyu
umyu

スコア5846

answer CHANGED
@@ -7,11 +7,12 @@
7
7
 
8
8
  ■問題点
9
9
  1,変数brを各処理で使いまわしている。面倒でも各処理でスコープを1個切って以下のようにすれば問題は発生しないはずです。
10
- {
10
+ ```
11
+ {//←ブロックスコープを切る
11
12
  BufferedReader br = new BufferedReader(new FileReader(csv));
12
13
  // case文で行っていること。
13
14
  }
14
-
15
+ ```
15
16
  2,`main`メソッドという一つのメソッド内で一覧表示、検索、登録と処理を行いすぎです。。
16
17
  そのため、どの機能が原因で今回のバグが発生したのかの問題の切り分けが不可能な状態になりやすいです。
17
18
  このソースコードを読む人のために機能単位にまず関数を作成しましょう。

3

追記

2018/02/11 10:53

投稿

umyu
umyu

スコア5846

answer CHANGED
@@ -6,8 +6,11 @@
6
6
  ファイルの先頭行から読み直す処理(`br#reset() `などの)が無いので正常な動作だと思いますが。。。
7
7
 
8
8
  ■問題点
9
- 1,変数brを各処理で使いまわしている。面倒でも各処理で以下のようにすれば問題は発生しないはずです。
9
+ 1,変数brを各処理で使いまわしている。面倒でも各処理でスコープを1個切って以下のようにすれば問題は発生しないはずです。
10
+ {
10
- BufferedReader br = new BufferedReader(new FileReader(csv));
11
+ BufferedReader br = new BufferedReader(new FileReader(csv));
12
+ // case文で行っていること。
13
+ }
11
14
 
12
15
  2,`main`メソッドという一つのメソッド内で一覧表示、検索、登録と処理を行いすぎです。。
13
16
  そのため、どの機能が原因で今回のバグが発生したのかの問題の切り分けが不可能な状態になりやすいです。

2

try~with~resources

2018/02/11 10:52

投稿

umyu
umyu

スコア5846

answer CHANGED
@@ -6,9 +6,15 @@
6
6
  ファイルの先頭行から読み直す処理(`br#reset() `などの)が無いので正常な動作だと思いますが。。。
7
7
 
8
8
  ■問題点
9
- 1,変数brを各処理で使いまわしている。面倒でも以下のようにすれば問題は発生しないはずです。
9
+ 1,変数brを各処理で使いまわしている。面倒でも各処理で以下のようにすれば問題は発生しないはずです。
10
10
  BufferedReader br = new BufferedReader(new FileReader(csv));
11
11
 
12
12
  2,`main`メソッドという一つのメソッド内で一覧表示、検索、登録と処理を行いすぎです。。
13
13
  そのため、どの機能が原因で今回のバグが発生したのかの問題の切り分けが不可能な状態になりやすいです。
14
- このソースコードを読む人のために機能単位にまず関数を作成しましょう。
14
+ このソースコードを読む人のために機能単位にまず関数を作成しましょう。
15
+ 3,ファイルの`close`忘れを防ぐために`try~with~resources`文を使ってくださいな。
16
+ ```Java
17
+ try(BufferedReader br = new BufferedReader(new FileReader(csv))) {
18
+ // やりたいこと。
19
+ }
20
+ ```

1

補足

2018/02/11 10:44

投稿

umyu
umyu

スコア5846

answer CHANGED
@@ -3,9 +3,8 @@
3
3
  ```
4
4
  を`while`文の上で宣言していて。
5
5
  各処理で`br#readline()`している箇所はありますが、
6
- `br#reset() `を行っている箇所がないので正常な動作だと思いますが。。。
6
+ ファイルの先頭行から読み直す処理(`br#reset() `などの)が無いので正常な動作だと思いますが。。。
7
7
 
8
-
9
8
  ■問題点
10
9
  1,変数brを各処理で使いまわしている。面倒でも以下のようにすれば問題は発生しないはずです。
11
10
  BufferedReader br = new BufferedReader(new FileReader(csv));