Parsin

时间:2015-12-09 07:22:49

标签: 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
{
  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);
   }
}

1 个答案:

答案 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个不存在的行时,您将获得该异常。