- PR -

CSVファイル→vector→String[][]二次元配列

投稿者投稿内容
popo
会議室デビュー日: 2006/05/31
投稿数: 6
お住まい・勤務地: 渋谷
投稿日時: 2006-06-01 01:11
お世話になっております。
質問なのですが。
csvから読み込んだものをいったんventorに格納し、
その後、String型の二次元配列に変換というのは可能でしょうか?
ご教授よろしくお願いいたします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-06-01 01:29
可能です。
popo
会議室デビュー日: 2006/05/31
投稿数: 6
お住まい・勤務地: 渋谷
投稿日時: 2006-06-01 01:55
インギさん返信ありがとうございます。
今のところ、CSV読み込んでこういった感じでvectorにつっこんでます。
String型の2次元配列に変換したいのですが、
arrayexceptionというエラーが出てしまいます。
アドバイスのほうよろしくお願いいたします。
while ((strtoken = fr.readLine()) != null) {
StringTokenizer st = new StringTokenizer(strtoken, ",");
while (st.hasMoreTokens()) {
// 1行の各要素をタブ区切りで表示
String str = st.nextToken();
if(count == 0) vec1.add(str);
else if(count == 1) vec2.add(str);
count++;
}
count = 0;
}
}
せん
ぬし
会議室デビュー日: 2002/03/04
投稿数: 397
投稿日時: 2006-06-01 08:15
引用:

今のところ、CSV読み込んでこういった感じでvectorにつっこんでます。
String型の2次元配列に変換したいのですが、
arrayexceptionというエラーが出てしまいます。



どこでエラーが発生するのですか?
エラーが出る所を修正すればよろしいかとおもいます。
koe
大ベテラン
会議室デビュー日: 2003/07/13
投稿数: 198
投稿日時: 2006-06-01 10:01
厳密なCSVでなく、単にカンマ区切りのテキストをString[][]に変換したいのなら、

String#split(String)で生成したString[]をArrayListに追加して、
最後にArrayList#toArray(Object[])でString[][]を生成、

というのが一番簡単に思えます。
popo
会議室デビュー日: 2006/05/31
投稿数: 6
お住まい・勤務地: 渋谷
投稿日時: 2006-06-01 11:33
皆さん返信ありがとうございます。
さっそくやってみたのですが、一次元なら変換は
できたのですが2次元だと例外(java.lang.ArrayStoreException)
がおきてしまいます。
ソースはこんな感じです。

String[][] a = (String[][])vec1.toArray(new String[0][0]);
for(int i=0; i<a.length; i++){
System.out.println(a[i]);
}

popo
会議室デビュー日: 2006/05/31
投稿数: 6
お住まい・勤務地: 渋谷
投稿日時: 2006-06-01 11:36
ごめんなさい、下のfor分は余計でした。。
String[][] a = (String[][])vec1.toArray(new String[0][0]);
こんな感じです。
koe
大ベテラン
会議室デビュー日: 2003/07/13
投稿数: 198
投稿日時: 2006-06-01 12:47
するならこうでしょう。
コード:
String[][] array = (String[][]) list.toArray(new String[list.size()][]);


あと、特別な理由がない限りは、VetcorよりもArrayListの使用をお薦めします。

スキルアップ/キャリアアップ(JOB@IT)