Я пишу программу, которая будет вводить ввод из текстового файла, заполненного классами учащихся. Эти оценки усредняются и добавляются в список массивов. Однако у меня проблемы с чтением файла. Я получаю несоответствие ввода. Я попытался изменить цикл в методе calcAssignmentAverage до менее 15 (в текстовом файле 15 классов, 2-я строка в текстовом файле), но он все еще дает несоответствие ввода.Ошибка ввода ввода Java из текстового файла
файла (реальный файл имеет 16 студентов в следующем формате.):
Puckett, Karen
10 10 9.5 10 10 8 9.5 10 10 10 9 10 10 10 0
4 3 5 3 5 2 3 2 1.5 1 5 3.5
17.5 24 22 23.5 22 23
90 91
96
Код:
public static void main(String[] args) throws IOException {
final double NUM_OF_LABS = 15;
final double NUM_OF_QUIZZES = 12;
final double NUM_OF_PROJECTS = 6;
final double NUM_OF_EXAMS = 2;
final double NUM_OF_FINAL = 1;
final double LAB_POINTS = 150;
final double QUIZ_POINTS = 60;
final double PROJECT_POINTS = 150;
final double EXAM_POINTS = 200;
final double FINAL_POINTS = 100;
//Open input file
File myFile = new File("scores.txt");
if (!myFile.exists()) {
System.out.println("The input file was not found.");
System.exit(0);
}
Scanner inputFile = new Scanner(myFile);
ArrayList<Student> studentList = new ArrayList<Student>();
readFile(inputFile, studentList, NUM_OF_LABS, LAB_POINTS, NUM_OF_QUIZZES,
QUIZ_POINTS, NUM_OF_PROJECTS, PROJECT_POINTS, NUM_OF_EXAMS,
EXAM_POINTS, NUM_OF_FINAL, FINAL_POINTS);
}
public static void readFile(Scanner inputFile,
ArrayList<Student> studentList, double NUM_OF_LABS,
double LAB_POINTS, double NUM_OF_QUIZZES, double QUIZ_POINTS,
double NUM_OF_PROJECTS, double PROJECT_POINTS,
double NUM_OF_EXAMS, double EXAM_POINTS, double NUM_OF_FINAL,
double FINAL_POINTS) {
//read and set data for student1:
while (inputFile.hasNext()) {
//create a new student
Student currentStudent = new Student();
//read name
String name;
name = inputFile.nextLine();
currentStudent.setName(name);
//read lab average
double labAverage = 0;
labAverage = calcAssignmentAverage(NUM_OF_LABS, inputFile, LAB_POINTS);
currentStudent.setLabAverage(labAverage);
//add currentStudent to the list
studentList.add(currentStudent);
}
}
public static double calcAssignmentAverage(double NUM_ASSIGNMENTS,
Scanner inputFile, double MAX_POINTS) {
double sum = 0;
double average = 0;
for (int i = 0; i < NUM_ASSIGNMENTS; i++) {
sum = sum + inputFile.nextDouble();
}
average = (sum/MAX_POINTS) * 100;
return average;
}
Ваш код использует класс Student, который не включен – aditsu
Извините, но это уже третий раз, когда вы читаете свой вопрос, но я не знаю, что именно нужно и какова ваша ошибка. уточняйте больше – Azad
Каковы строки (числа) после второй строки в файле образца? В настоящее время вы потребляете только 2-ю строку, но цикл while не будет функционировать должным образом, если он потребляет все строки, так как предполагает, что новый ученик находится в строке 3. – Byron