顺序读取文件时出现 NumberFormatException?

本质上,该程序的目的是将学生信息写入文件并从同一文件中读取。该程序包含一个 if 语句,用于判断学生是否处于良好的信誉或学术试用期,每个文件都有各自的文件(goodstanding.txt 和 probation.txt)。如果我注释掉 goodstanding.txt 的读取逻辑,程序工作文件,但对我来说,除了文件路径之外,它们似乎几乎相同,显然。我查看了其他问题,但其中大多数似乎与错误的类型转换有关。它抛出的具体错误NumberFormatException For input string: ""在线ID = Integer.parseInt(array[0]);


写逻辑如下:


if(GPA >= 2.0) //If GPA >= 2.0, write to good standing file. This is 

               identical to probation writer, but causes an issue somewhere

{

     String result = ID + "," + fname + " " + lname + "," + GPA;

     OutputStream out = new BufferedOutputStream(Files.newOutputStream(good, 

     StandardOpenOption.CREATE));

     BufferedWriter wt = new BufferedWriter(new OutputStreamWriter(out));

     wt.write(result, 0, result.length()); //Write to file from position 0 to 

                                        length

     wt.newLine();

     System.out.println("Please enter next WIN or 999 to quit: ");

     ID = input.nextInt();

     input.nextLine();

     wt.close();

}

     if(GPA < 2.0) //If GPA < 2.0, write to probation file {

     String result = ID + "," + fname + " " + lname + "," + GPA;

     OutputStream out = new 

                   BufferedOutputStream(Files.newOutputStream(probation, 

                   StandardOpenOption.CREATE));

     BufferedWriter wt = new BufferedWriter(new OutputStreamWriter(out));

     wt.write(result, 0, result.length());

     wt.newLine();

     System.out.println("Please enter next WIN or 999 to quit: ");

     ID = input.nextInt();

     input.nextLine();

     wt.close();

}

和读取逻辑:


try

{

    while(line != null)

{

    array = line.split(",");

    ID = Integer.parseInt(array[0]);

    name = array[1];

    GPA = Double.parseDouble(array[2]);

    double ahead = GPA - 2;

    System.out.println("WIN: " + ID + " | " + " Name: " + name + " |" + " GPA                 

                        = " + GPA + " | Ahead by " + ahead);

    line = reader.readLine(); 

}

}


我也尝试在 ID 上使用 trim() 方法,但异常仍然存在。是否有一个我需要阅读更多的概念来解释这一点?


陪伴而非守候
浏览 136回答 1
1回答

烙印99

我认为错误消息很清楚NumberFormatException For input string: "",因为您无法将空字符串解析为int。您的问题至少有两个原因,或者您的文件中有一些空白行,或者您的其中一行以逗号开头。通过执行以下操作来检查或忽略此类行:....&nbsp; &nbsp; while (line != null) {&nbsp; &nbsp; &nbsp; &nbsp; if(!line.startsWith(",") && !line.isEmpty()){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; array = line.split(",");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ID = Integer.parseInt(array[0]);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; name = array[1];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; GPA = Double.parseDouble(array[2]);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; double ahead = GPA - 2;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println("WIN: " + ID + " | " + " Name: " + name + " |" + " GPA = " + GPA + " | Ahead by " + ahead);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; line = reader.readLine();&nbsp; &nbsp; }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java