こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

二次元配列について

csvファイルを読み込み 、(コンマ)毎に区切り出力するプログラムを今作っています。
そこで最初に
import java.io.*;
import java.util.*;

public class aaa {
public static void main(String aaa[]) throws Exception{
Scanner yomi = new Scanner( new File("C:\\addorres.csv") );
yomi.useDelimiter( "," );
List<String> adorr = new ArrayList<String>();

while( yomi.hasNext() ){
adorr.add( yomi.next() );
}

for( String s: adorr ){
System.out.println( s );
}
}
}
と打ちましたそうすると
csvに
名前、住所、電話、アドレス、ID、PW
名前、住所、電話、アドレス、ID、PW
名前、住所、電話、アドレス、ID、PW
と入っていると表示されるのは
名前
住所
電話
アドレス
ID
PW
住所
電話
アドレス
ID
PW
住所
電話
アドレス
ID
PW
となってしまって名前を取り出すことができません。
そこで最初は名前入っていたんだからと安直に二次元配列に変えることにしました。
import java.io.*;
import java.util.*;

public class aaa {
public static void main(String aaa[]) throws Exception{
String[][] ad = new String[9999][9999];
int a = 0,c = 0,d=0;
Scanner yomi = new Scanner( new File("C:\\addorres.csv") );
yomi.useDelimiter( "," );
List<String> adorr = new ArrayList<String>();

while( yomi.hasNext() ){
adorr.add( yomi.next() );
}

for( String s: adorr ){
if(a==5)
{
c++;
a=0;
ad[a][c] = s;
d++;
}else{
ad[a][c]= s;
a++;
d++;
}
}
a = 0;
c = 0;
for (int b=0;b<d;b++)
{
if(a==5)
{
c++;
a=0;
System.out.println(b+":"+ad[a][c]);
}else{
System.out.println(b+":"+ad[a][c]);
a++;
}
}
}
}

そこでこの様に打ったんですが実行すると
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at aaa.main(aaa.java:7)
と結果がこの様にエラーとして返ってきます。
どなたかこれを解決する方法又は1次元配列でも名前を表示させる方法がわかる方がいましたら
お願い致します。

投稿日時 - 2011-04-28 15:58:27

QNo.6699946

すぐに回答ほしいです

質問者が選んだベストアンサー

useDelimiter
の引数は正規表現です。
また、\は\\で記述する必要があります。

というかぐぐれば正解が書いてある

投稿日時 - 2011-04-28 18:35:36

お礼

すいませんもう少し自分でちゃんと調べるべきでした。
どうもありがとうございます。

投稿日時 - 2011-05-09 13:25:11

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

そのままでも自分の環境では名前もちゃんと出力されますけど・・・
デリミタに改行が必要なら
yomi.useDelimiter( "\n|," );
ですかね。改行コードが\nなら。
BufferedReader使ってreadLine()で回してもいいとは思いますけどね。

投稿日時 - 2011-04-28 18:05:16

お礼

結局一度改行させたのを配列にいれて
その後もう一度splitで分けました。
ありがとうございます。

投稿日時 - 2011-05-09 13:27:33

ANo.1

useDelimiter
の指定に改行文字が入っていません

投稿日時 - 2011-04-28 16:31:38

お礼

ありがとうございます。改行が入っていなかったんですね。
そこでさらに聞きたいのですが
useDelimiter(",","\n")
にすると実行ができず。
useDelimiter("\nに")すると,が判定されません。
この場合どうしたらよいのでしょうか

投稿日時 - 2011-04-28 16:54:32