2012-04-11 17 views
1

私はまた、これを保存する.csvファイルを持っているCSVファイルをロードし、値から新しいクラスのインスタンスを作成

public class Album { 
    private int id; 
    private String artist; 
    private String name; 
    private int published; 
} 

適切なgetterメソッドとsetterメソッドで、次のように定義されたクラスを...持っていますいくつかのアルバムのコンテンツ。このファイルでは、1行は1つのアルバムを表します。

私は、.csvファイルから情報を読み込み、Albumクラスのセッターを使用して値を割り当てようとしています。

java.lang.NumberFormatException:入力文字列の場合: "albums.csv" でここに私のコードは...

public Map<Integer, Album> load() { 

    Scanner scanner = new Scanner(fileName); 
    Map<Integer, Album> loadedAlbums = new HashMap<Integer, Album>(); 

    while(scanner.hasNextLine()) { 
     Album album = new Album(); 

     String[] albumDivided = scanner.nextLine().split(","); 
     //in the .csv file every unit of information is divided by a comma. 

     album.setId(Integer.parseInt(albumDivided[0])); //this is line 11. 
     album.setArtist(albumDivided[1]); 
     album.setName(albumDivided[2]); 
     album.setPublished(Integer.parseInt(albumDivided[3])); 

     loadedAlbums.put(album.getId(), album); 

    } 

    return loadedAlbums; 
} 

しかし、このコードを使用しようと、私は次の例外を取得しています11行目。

この問題の原因を理解できたら助けてください。問題は例外であなたに説明されて

+0

ああ、ファイル内の情報の形式である:「1.、発行アーティスト名、アルバム名、」 – Mark

答えて

1

うーん...

NumberFormatExceptionはあなたのInteger.parseInt()行のいずれかによってトリガされていたであろう。例外をトリガーしているコードの行は、行11(例外メッセージに従って)です。どちらが1つであるかはわかりませんが、おそらく最初のInteger.parseInt()行です。

コードでは、"albums.csv"の数値を明らかに数値に変換しようとしています。だから、あなたのCSVファイルのどこかに値が入っている行があるはずです。albums.csvここでは、数字が必要です。

これは、問題を特定するのに役立ちます。

+0

おかげで、私は今問題を実現したアプローチは、次のようになります。 – Mark

1

あなたはここで全体のソリューションをしたくないので、あなたの問題を解決するためのヒントです:

あなたはAPI documentation of the Scanner classを見てみる必要があります。コード内で使用するように、単一のStringパラメーターを必要とするコンストラクターについては、実際によく見てみましょう。

+0

助けてくれてありがとう。将来的にAPIをもっと慎重に検討してください – Mark

1

私が言うことができる限り、albumDivided [0]には "1"が含まれます。ドットのために整数に解析することはできません。 csvファイルからドットを削除するか、整数に解析する前にドットを削除する新しい文字列を作成します。

String newString; 
for(int i=0;i<albumDivided[0].length-1;i++){ //length -1 to remove the dot 
    newString = newString + albumDivided[0].charAt(i); //get the string stored in albumDivided[0] and add each char to the new string 
} 
+0

ありがとう、私はこれに問題が発生した場合、これを念頭に置いておきます。 – Mark

関連する問題