По сути, целью программы является запись информации об ученике в файл и чтение из того же файла. Программа включает в себя утверждение «если», указывающее, имеет ли студент хорошую успеваемость или академический испытательный срок, с соответствующими файлами для каждого (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();
}
}
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();
Я также пытался использовать метод trim () для ID, но исключение осталось. Есть ли какая-то концепция, о которой мне нужно больше узнать, которая могла бы объяснить это?