Java 插入时已到达文件结尾
因此,我正在为我的java类编写这个程序,并记录了所有内容,除了错误“解析时到达文件末尾”,如果有人能帮助我了解一些情况,将对我大有帮助Java 插入时已到达文件结尾,java,parsing,Java,Parsing,因此,我正在为我的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
* 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);
}
}
*注释:此java程序输出学生姓名和考试成绩,然后根据成绩按顺序输出。
*/
导入java.io.*;
导入java.util.*;
公共类lab13
{
公共静态void main(字符串[]args)抛出FileNotFoundException、IOException
{
字符串Last[]=新字符串[20];
第一个字符串[]=新字符串[20];
字符串inputLine=“”;;
整数分数[]=新整数[20];
int i=0;
int-total=0;
字符串grade=“A”;
//创建FileReader对象以关联文件student.txt
FileReader fr=new FileReader(“student.txt”);//文件student.txt位于与文件lab13相同的文件夹中。创建一个
BufferedReader br=new BufferedReader(fr);//将文件student.txt加载到缓冲区(RAM)
while((inputLine=br.readLine())!=null)//从文件中读取数据
{
最后[i]=输入线;
第一[i]=br.readLine();
score[i]=Integer.parseInt(br.readLine());
i++;
}//边结束边循环
//确定成绩,并显示学生的姓名,后跟他们的考试成绩和成绩。
对于(i=0;i<20;i++)
{如果(分数[i]>=90)
等级=“A”;
//您的编码显示等级“B”、“C”、“D”和“F”。
对于(i=0;i<20;i++)
{如果(分数[i]>=80)
等级=“B”;
对于(i=0;i<20;i++)
{如果(分数[i]>=70)
等级=“C”;
对于(i=0;i<20;i++)
{如果(分数[i]>=60)
职系=“D”;
对于(i=0;i<20;i++)
{if(score[i]问题在于:
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()
,这意味着只有当您正在读取的文件中有三行的倍数时,您的代码才会工作。因此,这将起作用:
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())读取第六个不存在的行时
您将遇到该异常。欢迎使用Stack Overflow。您的文件可能没有三行的精确倍数。不幸的是,很难说清楚,因为您没有发布该文件的示例。此外,如果您的代码确实是这样的,我强烈建议您使用IDE为您格式化代码,缩进更为恰当。(如果代码在IDE中看起来很好,那么请确保在发布时看起来是一样的。)作为编写好的堆栈溢出问题的另一个实用技巧,可能是例外(您应该给出完整的细节)在程序的早期就出现了,这使得它的其余部分与问题无关,真的。提供一个-其中“最小”在帮助我们帮助您而不必查看大量无关代码方面非常重要-总是很有帮助的。