当我遇到这个错误时,我正在为我的AP计算机科学课程开发一个允许用户对音乐进行排序的项目。当行,
"2008 50 Ashley Tisdale He Said, She Said"
(每个部分通过标签分隔)
通过输入文件输入,我的程序无法正确响应并给了我这些错误
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at Song.parse(Song.java:19)
at GazillionSongs.main(GazillionSongs.java:44)
看到这个后,我得出结论,我的错误来自这段代码。
ArrayList<String> lines = new ArrayList<String>();
while (inFile.hasNextLine()) {
String line = inFile.nextLine();
lines.add(line);
}
ArrayList<Song> songs = new ArrayList<Song>();
Scanner allCommands = new Scanner(command);
for(int i = 0; i < lines.size(); i++) {
int year = 0;
int rank = 0;
String artist = "";
String title = "";
Song song = new Song(year, rank, artist, title);
song.parse(lines.get(i));
songs.add(song);
}
这个,来自我的宋课。
public Song(int year, int rank, String artist, String title) {
this.year = year;
this.rank = rank;
this.artist = artist;
this.title = title;
}
public static Song parse(String s) {
String[] tokens = s.split("/t");
year = Integer.parseInt(tokens[0]);
rank = Integer.parseInt(tokens[1]);
artist = tokens[2];
title = tokens[3];
Song song = new Song(year, rank, artist, title);
return song;
}
如果这还不够,我很抱歉,因为我是这个网站的新手。
有人可以解释我为什么会收到这些错误吗?
感谢。
答案 0 :(得分:2)
嗯,我看到的最明显的事情是,制表师是\ t,而不是/ t。以下代码按预期工作:
String s = "2008 50 Ashley Tisdale He Said, She Said";
String[] tokens = s.split("\t");
System.out.println(Integer.parseInt(tokens[0]));
System.out.println(Integer.parseInt(tokens[1]));
答案 1 :(得分:0)
正如JavaDoc所说
public class NumberFormatException extends IllegalArgumentException
抛出以指示应用程序已尝试转换a 字符串到其中一个数字类型,但字符串没有 适当的格式。
由于String[] tokens = s.split("/t");
行不会拆分表格,因为\t
表格不是/t
因此字符串没有被拆分而你得到NumberFormatException
答案 2 :(得分:0)
你的正则表达式问题。 在split api中使用以下正则表达式,它将根据字符串之间的空格进行拆分。
str.split(&#34; \ S +&#34)