Чтение из файла в массив объектов

#java

Вопрос:

Я пытаюсь прочитать данные из файла, которые мне нужно поместить в мой массив объектов. Когда я пытаюсь прочитать 6 тестов от одного студента, я получаю ошибку.

Я получаю эту ошибку,

Исключение в потоке «основной» java.lang.Исключение ArrayIndexOutOfBoundsException: Индекс 6 выходит за пределы длины 6
в example.example.readStudentList(пример.java:40)
в example.example.main(пример.java:57)

как я могу сделать так, чтобы я мог прочитать 6 тестов для каждого студента и не выйти за рамки?

 public static Scanner openFile()throws IOException{  File input;  Scanner inFile ;  String fileName;  System.out.print("Enter input file name and path if necessary: ");//e://csc121//data.txt  fileName = KB.nextLine();  input = new File(fileName);  if( ! input.exists()){  System.out.println("File does not exists. Check the file and try again");  System.exit(0);  }   inFile = new Scanner(input); // Step 1 Initialize loop condition  if (! inFile.hasNext()){  System.out.println("Error. Data file has no data.n");  System.exit(0);  }  return inFile; } public static int readStudentList(Student[] stu)throws IOException{  int i = 0;  Scanner inFile;  String name;  String id;  float quiz;  float[] tests = new float[6];  inFile = openFile();    while(inFile.hasNext()){  name = inFile.nextLine();  id = inFile.next();  for(int j = 0; i lt; 6; j  ){  tests[j] = inFile.nextFloat();  }  quiz = inFile.nextFloat();  inFile.nextLine();  stu[i] = new Student(name, id,tests,quiz);    i  ;  }  return i;  }    public static void main(String[] args)throws IOException {     Student[] arr = new Student[50];  int size;  size = readStudentList(arr);  System.out.println(size);  System.out.println(arr[0].name);  System.out.println(arr[0].id);  }   }   class Student {  public String id; public String name; public float[] tests = new float[6]; public float quiz;   Student(String name, String id, float[] tests, float quiz) {  this.id = id;  this.name = name;  this.tests = tests;  this.quiz = quiz;    } }  

Ответ №1:

Внимательно посмотрите на свой цикл for:

 for(int j = 0; i lt; 6; j  ){  

Обратите внимание , что вы увеличиваете j , но проверяете значение i

Ответ №2:

Вы использовали i в своем if заявлении вместо j . Попробуйте сделать следующее:

 public static int readStudentList(Student[] stu)throws IOException {  int i = 0;  Scanner inFile;  String name;  String id;  float quiz;  float[] tests = new float[6];  inFile = openFile();    while(inFile.hasNext()){  name = inFile.nextLine();  id = inFile.next();    for(int j = 0; j lt; 6; j  ){  tests[j] = inFile.nextFloat();  }    quiz = inFile.nextFloat();  inFile.nextLine();  stu[i] = new Student(name, id,tests,quiz);    i  ;  }    return i;  }