线程“main”中的异常java.lang.NumberFormatException:对于输入字符串:“1001”
我不明白为什么这段代码会抛出异常。
1001 elma 87
- >这是文本文件,我确定这是一个数字。
public class Food {
public String[][] foodArray = new String[1000][100];
public int sayac = 0;
public void readText() {
try (Scanner sc = new Scanner(new BufferedReader(new FileReader("food.txt")))) {
while (sc.hasNextLine()) {
String bilgiler = sc.nextLine().trim();
foodArray[sayac] = bilgiler.split("\t");
System.out.println(Integer.parseInt(foodArray[sayac][0]));
sayac++;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
Exception in thread "main" java.lang.NumberFormatException: For input string: "1001"
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 Food.readText(Food.java:13)
at Main.main(Main.java:11)
答案 0 :(得分:0)
我可以看到唯一的问题是在文件中分隔单词的字符不是制表符(\ t),但可能只是空格。这就是为什么它无法正确split
行的原因。你能告诉我们确切的堆栈跟踪是什么吗?
答案 1 :(得分:0)
分隔字符不是制表符(\ t),这就是为什么行不会在不同的部分中分割,整行存储在数组的第0个索引处。当你使用parseInt时,它会尝试解析整个行1001 elma 87
我建议使用bilgiler.split(" ")
来处理用作分隔符的单个或多个空格。
答案 2 :(得分:0)
您的文件行分隔符可能不是标签,我建议您打印拆分数组并使用bilgiler.split("\\s+");
拆分单词之间的所有空格