質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

1回答

1257閲覧

csvファイルの読み込み・データ格納・出力の工程の各メソッド化

machaparfait

総合スコア0

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2021/10/17 02:11

前提・実現したいこと

csvファイルを読み込み出力する工程を、
1、ファイルの読み込み
2、データの格納
3、出力
といった3つのメソッドに分ける。

■ここに質問の内容を詳しく書いてください。
javaでメソッド化、引き数・戻り値の値の受け渡し、についてのの勉強中です。

発生している問題・エラーメッセージ

BufferedReaderをStringに変換できません

該当のソースコード

java

1import java.io.BufferedReader; 2import java.io.FileNotFoundException; 3import java.io.FileReader; 4import java.io.IOException; 5import java.util.ArrayList; 6import java.util.List; 7 8 9class Study { 10 11    /** ファイルを読み込むメソッド */ 12 public ArrayList<String> csvRead(String PATH) { 13 try { 14 BufferedReader br = new BufferedReader(new FileReader(PATH)); 15 ArrayList<String> brLine = new ArrayList<>(); 16 brLine.add(br); 17 //BufferedReaderをStringに変換できません 18 19 } catch (FileNotFoundException e) { 20 System.out.print("ファイルがありません。"); 21 } catch (IOException e) { 22 System.out.print("例外が発生しました。"); 23 } finally { 24 try { 25 br.close(); 26 } catch (Exception e) { 27 System.out.print("ファイルのクローズに失敗しました。"); 28 } 29          return brLine; 30 } 31 } 32 33 /** データを格納する */ 34 public String[] csvInput(ArrayList<String> valuesDate) { 35 String line; 36 while ((line = valuesDate.readLine()) != null) { 37 String[] values = valuesDate.split(","); 38 } 39 return values; 40 } 41 42 /** 出力 */ 43 public void csvShow(String[] csvValues) { 44 for (int i = 0; i < csvValues.length(); i++) { 45 System.out.print("[" + csvValues[i] + "]"); 46 } 47 System.out.println(); 48 } 49 50 /** メインメソッド */ 51 public static void main(String[] args) { 52 String PATH ="/Users/○○○○/XXXXXX.csv"; 53 ArrayList<String> valuesDate = csvRead(PATH); 54 String[] csvValues = csvInput(valuesDate); 55 csvShow(csvValues); 56 } 57} 58

試したこと

brをリストに入れる。

補足情報(FW/ツールのバージョンなど)

ファイルは
[ID][名前][アドレス][性別][年齢][生年月日][出身地]といった感じです。
これを単純に連続して出力します。

命題について引っかかっている段階で、
全体的にコードがめちゃくちゃかと思いますが、よろしくお願い致します。

java 17
mac os
vscode

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/10/17 02:44

1 行ずつ読んで、カンマ , で Split するというやり方は、フィールドの中に改行、カンマがあるとたちまち破綻しますが、そのあたりは理解したうえでやってますか? 答えが No なら上記のことに対応できる、 > 1、ファイルの読み込み をまず考えてみませんか? ステップバイステップで進めないと、後戻り工数の発生ぐらいならともかく、どうにもならなくなってお手上げ状態になるかもしれません。
jimbe

2021/10/17 08:49

> フィールドの中に改行、カンマがあるとたちまち破綻しますが 恐らくこの課題の目的はあくまでメソッド化のほうで、CSV の完全な読み込みは期待されていないのではないでしょうか。
machaparfait

2021/10/17 14:07

皆さまご指摘ありがとうございます。 アドバイスの通り1行ずつ動きを追ってコードを書き直し、エラーの件は解決しました。 jimbeさんのおっしゃる通りでこの課題の目的はメソッド化で引き数・戻り値などを理解する事です。 よろしければ、その辺りのアドバイスを頂けると幸いです。
退会済みユーザー

退会済みユーザー

2021/10/17 14:28

最初からすべてを正しくやることをお勧めします。メソッド化云々は正しくできてからの話だと思います。
guest

回答1

0

csvReadに関しては戻り値とbrLineをString[]型で宣言してbrLineを返せばいいと思います。
あと、csvReadで文字列分割までしていいと思います。

java

1 public String[] csvRead(String PATH) { 2 try { 3 BufferedReader br = new BufferedReader(new FileReader(PATH)); 4 String[] brLine = br.nextLine().split(","); 5 } catch (FileNotFoundException e) { 6 System.out.print("ファイルがありません。"); 7 } catch (IOException e) { 8 System.out.print("例外が発生しました。"); 9 } finally { 10 try { 11 br.close(); 12 } catch (Exception e) { 13 System.out.print("ファイルのクローズに失敗しました。"); 14 } 15 return brLine; 16 } 17 } 18                ・・・中略・・・ 19 public static void main(String[] args) { 20 String PATH ="/Users/○○○○/XXXXXX.csv"; 21 String[] csvValues = csvRead(PATH); 22 csvShow(csvValues); 23 } 24

投稿2021/11/01 09:55

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問