线程“main”NumberFormatException中的异常

时间:2018-03-22 19:42:25

标签: java

线程“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)

3 个答案:

答案 0 :(得分:0)

我可以看到唯一的问题是在文件中分隔单词的字符不是制表符(\ t),但可能只是空格。这就是为什么它无法正确split行的原因。你能告诉我们确切的堆栈跟踪是什么吗?

答案 1 :(得分:0)

分隔字符不是制表符(\ t),这就是为什么行不会在不同的部分中分割,整行存储在数组的第0个索引处。当你使用parseInt时,它会尝试解析整个行1001 elma 87

我建议使用bilgiler.split(" ")来处理用作分隔符的单个或多个空格。

答案 2 :(得分:0)

您的文件行分隔符可能不是标签,我建议您打印拆分数组并使用bilgiler.split("\\s+");拆分单词之间的所有空格