- 締切済み
CSVファイルを二次元配列に格納するプログラム
前回のソースコードを改変してみました String Str = ""; int Count = 0; try { File inFile = new File("./res/test.csv"); FileReader fr = new FileReader(inFile); BufferedReader br = new BufferedReader(fr); while (br.ready()) { Str = br.readLine(); String[] temp = Str.split(","); int[] m = new int[temp.length]; for (int i = 0; i < temp.length; i++) { m[i] = Integer.parseInt(temp[i]); System.out.print(m[i] + ","); } System.out.println(); Count++; } br.close(); fr.close(); } catch (Exception e) { System.out.println("ファイル読み込みに関するエラー"); } 今一次元配列になっているのですが、これを二次元配列に代入したいのです Countで何回ループしたかによって二次元配列の縦の要素数としたかったのですが、 そうすると横の要素数になるループ中の一次元配列が使えないので困っています
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- teketon
- ベストアンサー率65% (141/215)
ちょっと状況がわからないので質問。学生さんのようですから、課題などでしょうか? それとも、2次元配列は手段に出来ず、何かの処理の一つなのでしょうか? 実はCSVファイルは決まった仕様がなく、 本格的な処理をするならば、どこかからライブラリを拾ってきた方が早いです。 課題等ならば頑張れとしか言えませんが、 String#split()メソッドでは、以下のようなカンマ区切りは処理できません。 AAAAA,"BBBBBB,CCCCC"
- co_maam
- ベストアンサー率65% (13/20)
java.util.Listを利用してはどうでしょう。 例 BufferdReader br = new BufferdReader(new FileReader(new File("./test.csv"))) List<String[]> csv = new ArrayList<String[]>(); String str = br.readLine(); while (srt != null) { csv.add(str.split(",")); str = br.readLine(); } for(String[] line : csv) { System.out.println(Arrys.toString(line)); } ※別件ですが、close()メソッドはfinally節で実行しないと、close()メソッド到達前にExceptionが発生した時にclose()メソッドが呼ばれず、リソースの開放が行われません。