gpt4 book ai didi

java - 顺序读取文件时出现 NumberFormatException?

转载 作者:行者123 更新时间:2023-12-02 09:59:42 29 4
gpt4 key购买 nike

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

行上的 NumberFormatException For input string: ""

这是写入逻辑:

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();
}
}
catch(NullPointerException e)
{System.out.println("NullPointerException occurred");}
reader.close();


InputStream input2 = new
BufferedInputStream(Files.newInputStream(probation));
BufferedReader reader2 = new BufferedReader(new InputStreamReader(input2));
String line2 = reader2.readLine();
System.out.println();
System.out.println("---------------------------");
System.out.println("--Academic Probation List--");
System.out.println("---------------------------");
try{
while(line2 != null)
{
array = line2.split(",");
ID2 = Integer.parseInt(array[0]);
name2 = array[1];
GPA2 = Double.parseDouble(array[2]);
double fallShort = 2 - GPA2;
System.out.println("WIN: " + ID2 + " | " + " Name: " + name2 + " |" + "
GPA = " + GPA2 + " | Behind by " + fallShort);
line2 = reader2.readLine();
}
}
catch(NullPointerException e)
{e.printStackTrace();}
reader.close();

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

最佳答案

错误消息很清楚,我认为 NumberFormatException For input string: "" 因为你无法将空字符串解析为 int。

您的问题至少有两个原因,要么您的文件中有一些空行,要么其中一行以逗号开头。通过执行以下操作来检查或忽略此类行:

....
while (line != null) {
if(!line.startsWith(",") && !line.isEmpty()){
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();
}

关于java - 顺序读取文件时出现 NumberFormatException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55728683/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com