アプリ版:「スタンプのみでお礼する」機能のリリースについて

前回のソースコードを改変してみました

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で何回ループしたかによって二次元配列の縦の要素数としたかったのですが、
そうすると横の要素数になるループ中の一次元配列が使えないので困っています

A 回答 (2件)

ちょっと状況がわからないので質問。

学生さんのようですから、課題などでしょうか?
それとも、2次元配列は手段に出来ず、何かの処理の一つなのでしょうか?

実はCSVファイルは決まった仕様がなく、
本格的な処理をするならば、どこかからライブラリを拾ってきた方が早いです。
課題等ならば頑張れとしか言えませんが、
String#split()メソッドでは、以下のようなカンマ区切りは処理できません。
AAAAA,"BBBBBB,CCCCC"
    • good
    • 0

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()メソッドが呼ばれず、リソースの開放が行われません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!