Я пытаюсь создать что-то, что по сути позволило бы мне искать результаты определенных людей в другом тесте без необходимости пролистывать все. Он принимает входные данные, такие как имя, возраст и пол любого «студента», которого мне нужно найти, затем он должен найти этого конкретного студента и распечатать результаты внизу.
У меня файл настроен так, что когда кто-то проходит тест, его результаты печатаются следующим образом:
Имя
Возраст
Пол
Результаты
Я хочу мой код, чтобы найти введенное имя, затем посмотреть, соответствует ли возраст под именем введенным, а затем посмотреть, соответствует ли пол под этим введенным данным. Если все это верно, он должен распечатать результаты.
//These ask for the name, age, and gender
Scanner enterName = new Scanner(System.in);
System.out.println("Please enter Student's full name below.");
var stuName = enterName.nextLine();
Scanner enterAge = new Scanner(System.in);
System.out.println("Please enter Student's age below.");
var stuAge = enterAge.nextInt();
Scanner enterGender = new Scanner(System.in);
System.out.println("Please enter Student's gender below (Female or Male).");
var stuGender = enterGender.nextLine();
//These scanners search for the information
Scanner usersName = new Scanner(new File("Example.txt"));
Scanner usersAge = new Scanner(new File("Example.txt"));
Scanner usersGender = new Scanner(new File("Example.txt"));
Scanner usersScore = new Scanner(new File("Example.txt"));
var searchName = usersName.nextLine();
//This shoulder search for the information and come back true if it's found
try {
while (usersName.hasNextLine()) {
searchName = usersName.nextLine();
if (searchName.equals(stuName)) {
break;
}
}
} catch (Exception e) {
if (!usersName.equals(stuName)) {
System.out.println("Student not found");
}
}
var searchAge = usersName.nextLine();
if(!searchAge.equals(stuAge)) {
System.out.println("Student not found");
System.exit(1);
}
var searchGen = usersGender.nextLine();
if(!searchGen.equals(stuGender)) {
System.out.println("Student not found");
System.exit(1);
}
if(searchName.equals(stuName) && usersAge.equals (stuAge) && usersGender.equals(stuGender)) {
var searchScore = usersScore.nextDouble();
System.out.println("The student " + stuName + "'s score was: " + searchScore);
System.exit(1);
} else {
System.out.println("Student not found");
System.exit(1);
}
Где-то по пути он теряется и всегда печатает «Студент не найден», даже если я знаю, что именно эти результаты есть в файле.
Пример файла
Test
1
Female
93.0%
Test
2
Female
97.0%
Test
3
Female
100.0%
Подробнее здесь: https://stackoverflow.com/questions/768 ... ut-results