簡體   English   中英

線程“主”中的異常NumberFormatException

[英]Exception in thread “main” NumberFormatException

線程“主”中的異常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)

我可以看到的唯一問題是,文件中分隔單詞的字符不是制表符(\\ t),而是空格。 這就是為什么它不能正確split線的原因。 您能告訴我們確切的堆棧跟蹤是什么嗎?

分隔符不是tab(\\ t),這就是為什么行沒有分成不同的部分,並且整行存儲在數組的第0個索引處的原因。 當您使用parseInt時,它將嘗試解析整行,即1001 elma 87

我建議使用bilgiler.split(" ") ,它將處理用作分隔符的單個或多個空格。

您的文件行分隔符可能不是制表符,我建議您打印拆分數組並使用bilgiler.split("\\\\s+"); 分隔單詞之間的所有空格

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM