所以我正在为我的java类编写这个程序并将所有内容都删除,除了错误“解析时到达文件末尾”,如果有人能给我一些帮助,那将对我有很大的帮助!
* COMMENTS: This java program outputs students names and test scores then outputs in order based on their grade.
*/
import java.io.*;
import java.util.*;
public class lab13
{
public static void main(String[] args)throws FileNotFoundException, IOException
{
String Last[]= new String[20];
String First[] = new String[20];
String inputLine="";;
int score[]=new int[20];
int i = 0;
int total =0;
String grade = "A";
//Create a FileReader object to associate the file student.txt
FileReader fr = new FileReader("student.txt"); //The file student.txt is located in the same folder that has the file lab13. Create a
BufferedReader br = new BufferedReader(fr); //Load the file student.txt into the buffer (RAM)
while((inputLine = br.readLine()) != null) //Read data from the file
{
Last[i] = inputLine;
First[i] = br.readLine();
score[i] = Integer.parseInt(br.readLine());
i++;
}//end while loop
//Determine the grade and also display the students' names followed by their test scores and grades.
for(i =0; i < 20; i++)
{if( score[i]>= 90)
grade = "A";
//YOUR CODING TO DISPLAY GRADE "B", "C", "D", and "F'.
for(i =0; i < 20; i++)
{if( score[i]>= 80)
grade = "B";
for(i =0; i < 20; i++)
{if( score[i]>= 70)
grade = "C";
for(i =0; i < 20; i++)
{if( score[i]>= 60)
grade = "D";
for(i =0; i < 20; i++)
{if( score[i]<= 59)
grade = "F";
}
//Determine the highest score
int highest = score[0];
for(i = 1; i<20;i++)
{ if (score[i] > highest)
highest = score[i];
}
//Determine the lowest score.
//YOUR CODING
int lowest = score[0];
for(i = 1; i<20;i++)
{ if (score[i] > lowest)
lowest = score[i];
}
//Determine the average
//YOUR CODING
int average = score[0];
for(i = 1; i<20;i++)
{ if (score[i] > average)
average = score[i];
}
//Display the highest score, lowest score and average.
//YOUR CODING
System.out.print("Highest Score:"+ highest);
System.out.print("Lowest Score:"+ lowest);
System.out.print("Average Score:"+ average);
System.exit(0);
}
}
答案 0 :(得分:0)
问题在于:
while((inputLine = br.readLine()) != null) //Read data from the file
{
Last[i] = inputLine;
First[i] = br.readLine();
score[i] = Integer.parseInt(br.readLine());
i++;
}
您在同一循环中调用br.readLine()
三次,这意味着只有当您正在阅读的文件的行数为3的倍数时,您的代码才会起作用。所以这将有效:
Line 1 //inputLine = br.readLine()) != null
Line 2 //First[i] = br.readLine();
Line 3 //score[i] = Integer.parseInt(br.readLine());
Line 4 //inputLine = br.readLine()) != null
Line 5 //First[i] = br.readLine();
Line 6 //score[i] = Integer.parseInt(br.readLine());
以下内容将失败:
Line 1 //inputLine = br.readLine()) != null
Line 2 //First[i] = br.readLine();
Line 3 //score[i] = Integer.parseInt(br.readLine());
Line 4 //inputLine = br.readLine()) != null
Line 5 //First[i] = br.readLine();
//score[i] = Integer.parseInt(br.readLine());
当它尝试用Integer.parseInt(br.readLine())
读取第6个不存在的行时,您将获得该异常。