プロが教えるわが家の防犯対策術!

BufferedReaderでファイルを読んだのちに、見出しの文字列をカンマで分割して
文字列を比較しようとしています。
ですが、分割すると、文字列が別な文字コードによる表記に変わってしまいます。
なぜでしょうか?
また、解決方法などのヒントなどあれば教えてください。

BufferedReader buffReader =
new BufferedReader(
new FileReader("/home/masa/Desktop/Sample.csv"));
String s;
int ini=0;
int wamei=0;
int i=0;
while((s = buffReader.readLine())!= null){
String[] str = s.split(",", -1);
//System.out.println(s);
if (i == 0) {
for(int j=0; j<str.length;j++){
System.out.println(String.toString(str));

if(str.equals("五十音")){ini = j;}
System.out.println("五十音"+ini);

if(str.equals("a")){wamei = j;}
System.out.println("和名"+wamei);

//System.out.println(j);

}
}
i++;

A 回答 (2件)

FileReaderクラスを使う場合はデフォルトの文字コードで読み込まれますが、


csvファイルの文字コードと合っていますか?
もし違うならFileInputStreamクラスとInputStreamReaderクラスを使って
文字コードを指定してファイルを読み込むようにしてください。

また、他のコードも???なところが・・・
>System.out.println(String.toString(str));
String#toString(String[]) のようなメソッドはないです。

>f(str.equals("五十音")){ini = j;}
>if(str.equals("a")){wamei = j;}
Stringの配列と文字列を比較しているので常にfalseになるはずです。
    • good
    • 0
この回答へのお礼

返信ありがとうございます。

返事が遅くなってすみません。

>Stringの配列と文字列を比較しているので常にfalseになるはずです。
この部分のケアレスミスでした。

お礼日時:2011/12/15 08:38

System.out.println(String.toString(str));





System.out.println(str[j]);
にしたら表示できるんじゃないでしょうか?
質問のままだと、配列の番地を文字列にして出力しようとしてるんだと思います。
    • good
    • 0
この回答へのお礼

返信ありがとうございます。

返事が遅くなってすみません。

>System.out.println(String.toString(str));
この部分はよく理解せずにメソッドを使っていました。

お礼日時:2011/12/15 08:40

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