dポイントプレゼントキャンペーン実施中!

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次元配列でも名前を表示させる方法がわかる方がいましたら
お願い致します。

A 回答 (3件)

useDelimiter


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

というかぐぐれば正解が書いてある
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/05/09 13:25

そのままでも自分の環境では名前もちゃんと出力されますけど・・・


デリミタに改行が必要なら
yomi.useDelimiter( "\n|," );
ですかね。改行コードが\nなら。
BufferedReader使ってreadLine()で回してもいいとは思いますけどね。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/05/09 13:27

useDelimiter


の指定に改行文字が入っていません
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/04/28 16:54

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