I have a class defined like this, with the appropriate getter and setter methods…
public class Album {
private int id;
private String artist;
private String name;
private int published;
}
I also have a .csv file that stores this content for a number of Albums. In the file, one line represents one Album.
I’m trying to read the information from the .csv file, and then use the setters of the Album class to assign the values. Here is my code…
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;
}
However, trying to use this code, I get the following Exception:
java.lang.NumberFormatException: For input string: “albums.csv” at line 11.
Could you please help me to understand the cause of this problem.
Well the problem is described to you by the Exception…
A
NumberFormatExceptionwould have been triggered by one of yourInteger.parseInt()lines. The line of your code that is triggering the exception is Line 11 (as per the exception message) – not sure which one this is but its probably the firstInteger.parseInt()line.Your code is trying to convert the value “albums.csv” to a number, which is obviously isn’t. So somewhere in your CSV file you must have a line that contains the value albums.csv where it is expecting a number.
Hope this helps pinpoint the problem.