У меня возникли проблемы с пониманием того, как разбирать текстовые документы с неизвестным количеством «учеников». Все мои решения странствуют, и у меня проблемы со Сканером. Разбирая входные данные, первое целое число показывает, сколько классов есть, первая строка - это имя класса, следующие учащиеся с соответствующими датами и переменными, которые необходимо сохранить вместе со студентом, с неизвестным количеством студентов. Я хочу, чтобы хранить каждый студент вместе с классом они находятся вКак я должен анализировать это на Java?
Мой код очень грязный и запутанной до сих пор:.
String filename = "input.txt";
File file = new File(filename);
Scanner sc = new Scanner(file);
Student[] studArr = new Student[100];
int studCounter = 0;
boolean breaker = false;
boolean firstRun = true;
int numClasses = sc.nextInt();
System.out.println(numClasses);
while(sc.hasNextLine()){
String className = sc.nextLine();
System.out.println("Name: " + className);
String test = null;
breaker = false;
sc.nextLine();
// Breaks the while loop when a new class is found
while (breaker == false){
Student temp = null;
// Boolean to tell when the first run of the loop
if (firstRun == true){
temp.name = sc.nextLine();
}
else
temp.name = test;
System.out.println(temp.name);
temp.date = sc.nextLine();
if (temp.date.isEmpty()){
System.out.println("shit is empty yo");
}
temp.timeSpent = sc.nextInt();
temp.videosWatched = sc.nextInt();
temp.className = className;
studArr[studCounter] = temp;
studCounter++;
sc.nextLine();
test = sc.nextLine();
firstRun = false;
}
}
}
}
class Student {
public String name;
public String date;
public String className;
public int timeSpent;
public int videosWatched;
}
мне не нужен точный ответ, но я должен искать в другой инструмент, а затем сканер? Есть ли способ, который я могу исследовать?
Спасибо за любую помощь.
У вас проблема, описанная здесь http://stackoverflow.com/questions/13102045/skipping-nextline-after-use-nextint. Также 'if (firstRun == true)' не лучший стиль кодирования (очень легко ошибиться, как 'if (firstRun = true)'). Лучше просто написать 'if (firstRun)' – Pshemo