java.lang.NumberFormatException 正在读取文件

java.lang.NumberFormatException while reading from a file

我正在尝试创建一个基本程序,它读取一个包含未知数量的矩阵排列的数字的文件,创建一个字符串格式的数组列表来读取它,然后将其解析为 int 以供多个其他进程使用.我在解析时得到 java.lang.NumberFormatException,我知道这可能是因为一个空白值被解析为一个 int。我看过其他问题,但似乎无法解决。这是代码的一部分:

public static void main(String[] args) {
    try {
            br = new BufferedReader(new FileReader(theFile));
            String line = null;

            while ((line = br.readLine()) != null) {                
                String[] aLine = line.split("/t");
                br.readLine();
                numLine.add(aLine);
            }
        } catch (IOException e){
        } finally {
            try {
                br.close();
            } catch (Exception e) {
            }
        }

    for (int i=0; i < numLine.size(); i++){
        for (int j = 0; j < numLine.get(i).length; j++){
            System.out.print(numLine.get(i)[j] + " ");
            //  if (!((numLine.get(i)[j]).equals("\t"))){
            intList.add(Integer.parseInt(numLine.get(i)[j]));
            //  }
        }
        System.out.println();
    }
}

这是错误的内容:

Exception in thread "main" java.lang.NumberFormatException: For input string: "6    10  9   10  12  "
    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 readingTextFiles.Main.main(Main.java:34)

请考虑到我是一名新手程序员,所有这些都是从研究中得到的,所以我不太确定这个理论是如何运作的。

程序的输出是什么?制表符由 \t 而不是 /t (line.split("\t");) 表示。此外,您将需要添加验证检查,以确保您阅读的每一行实际上都是 Integer

如@kayKay 所述更改分隔符,您正在尝试再次阅读该行。我认为你不应该 ??

public static void main(String[] args) {
try {
    br = new BufferedReader(new FileReader(theFile));
    String line = null;

    while ((line = br.readLine()) != null) {
        String[] aLine = line.split("\t"); // Also as kaykay mentioned change /t to \t
        //br.readLine();  // You are reading the line again - Comment it out 
        numLine.add(aLine);
    }
} catch (IOException e){
} finally {
    try {
        br.close();
    } catch (Exception e) {
    }
}

for (int i=0; i < numLine.size(); i++){
    for (int j = 0; j < numLine.get(i).length; j++){
        System.out.print(numLine.get(i)[j] + " ");
        //  if (!((numLine.get(i)[j]).equals("\t"))){
        intList.add(Integer.parseInt(numLine.get(i)[j]));
    }
System.out.println();
}