Javaの勉強をしています。
csvファイルを読み込んで2次元配列に格納する方法を教えて下さい。
1次元の配列なら下記のようにして出来たのですが、2次元の配列に格納する方法が分かりません。
------------------------------
try {
File csv = new File("xxx.csv");
BufferedReader brf = new BufferedReader(new FileReader(csv));
while(brf.ready()) {
String line = brf.readLine();
String[] data = line.split(",");
for(int j=0; j<data.length; j++) {
System.out.print(data[j] + "\t");
}
System.out.println();
}
brf.close();
} catch(FileNotFoundException e) {
e.printStackTrace();
} catch(IOException e) {
e.printStackTrace();
}
---------------------------
一度はできないのかと思い、上記の1次元配列のdata[j]を2次元配列のarray[i][j]に代入してみたのですが出来ませんでした。
回答宜しくお願い致します。
No.1
- 回答日時:
全体の行数が分からないと、2次元配列array[][]の初期化ができません。
全体の行数を n と仮定するとこんな感じでしょうか。
String[][] array = new String[n][]; /* String[]をn行分確保 */
i = 0;
while (...) {
String line = brf.readLine();
array[i] = line.split(","); /* i行目をsplit()した結果を代入 */
i++;
}
for (i = 0; i < n; i++) {
for (j = 0; j < array[i].length; j++) {
System.out.println("["+i+"]["+j+"] = " + array[i][j]); /* array[i][j]の読み出し */
}
}
ファイルを読み終わってからでないと全体の行数が分からない場合には、さらに一工夫必要です。
salsberry様、ご回答どうも有難うございます。
とても参考になりました。
ファイル全体の行数はファイルを読み終わってからでないとわからないのですが、その場合どうすればよいのでしょう??
適当な行数で2次元配列を初期化してしまうと読み出しで不具合が出てしまいますし・・・
宜しくお願い致します。
No.2
- 回答日時:
ArrayListにdataを入れるという方法はダメでしょうか?
List形式ならばどんどんaddするだけですので。
今のやりかただと1度ファイルをまないとダメですね。
No.3ベストアンサー
- 回答日時:
#1です。
> ファイル全体の行数はファイルを読み終わってからでないとわからないのですが、その場合どうすればよいのでしょう??
#2の方が書いておられるように、ArrayListなど適当なコレクションクラスにファイルを読み込み、行数が分かってから配列をnewすればいいでしょう。
import java.util.ArrayList;
ArrayList<String[]> al = new ArrayList<String[]>();
while (...) {
String line = brf.readLine();
al.add(line.split(",")); /* ArrayListへ読み込み */
}
String[][] array = new String[al.size()][];
for (i = 0; i < al.size(); i++) {
array[i] = al.get(i); /* ArrayListから配列へ */
}
勉強頑張ってください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- Visual Basic(VBA) エクセルVBAについて 8 2022/07/13 22:41
- Perl perlで2次元配列をサブルーチンに値渡しで渡す 5 2022/12/17 18:49
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
CSVファイルを二次元配列に格納するプログラム
Java
-
CSVファイルの、列だけ取得したい
Java
-
CSVファイルの特定の行だけを読み込みたいです。
Java
-
-
4
Javaの質問です。テキストファイルを読み込み、配列にデータを格納する。
Java
-
5
文字列からダブルクオートの削除
Java
-
6
javaで大量のファイルを読み込む方法
Java
-
7
CSVファイルを多次元配列に格納する
Java
-
8
Path型をString型へ変換する(Java)
Java
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
この警告はどうすれば?
-
Javaで文字を漢字であるか否か...
-
[長文失礼致します]Java入門...
-
出力ストリームをバイト配列へ...
-
配列で、値の入っている要素数...
-
JSPでデータ一覧表示
-
ArrayListからBean配列に値をセ...
-
java 大文字と小文字を入れ替える
-
『args[]』とは?
-
[Ljava.lang.Stringってなんですか
-
sqlparamaterでIN句を使いたい。
-
java HashMapのキーをkeySet()...
-
n番目に大きな値を探索する
-
質問です。 配列が100以上の場...
-
無名配列の作成方法について質問
-
ページング
-
hit&blow
-
forループの評価(条件)式につ...
-
配列をセッションに割り当てた後で
-
JavaのCalendarのMONTHはなぜ0...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Javaで文字と数字が混ざったも...
-
[Ljava.lang.Stringってなんですか
-
この警告はどうすれば?
-
Java配列の問題を教えてくださ...
-
配列の中に複数存在する数がい...
-
配列で、値の入っている要素数...
-
java
-
『args[]』とは?
-
javaで大容量テキストファイル...
-
C#で動的配列Listの中身をListB...
-
csvファイルを2次元配列に格納
-
Javaで文字を漢字であるか否か...
-
フローチャート
-
javaについて
-
【C#】ハッシュテーブル(連想...
-
セッションを使ったint型の値の...
-
C言語でunsigned char配列を連...
-
配列について
-
n番目に大きな値を探索する
-
cloneメソッドについて (java)
おすすめ情報