Java, как запустить программу в цикле и вести учет
Я создал программу викторины, которая отслеживает результаты студентов. Что я пытаюсь сделать, так это то, что если ученик получил 100%, он получит сообщение, что его оценка равна 100%. Если счет меньше 100, программа должна перезапуститься и сохранить счетчик до 5 попыток в целом числе счетчика.
Как только счетчик достигнет целого числа 5 со счетом меньше 3, прервите программу и отобразите сообщение "Пройдите тест позже"
Что работает прямо сейчас: я могу отслеживать переменную "Score" int и ее работу, если вы получаете 100% или меньше 100%.
То, что я пытаюсь заставить работать: заставить переменную int "counter" работать так, чтобы сохранить количество попыток, чтобы пользователь получил до 5 попыток, и перезапустить всю консольную программу, сохраняя при этом счет в переменной "counter". например:
counter < 5 - try again
counter++
counter >= 5 - end the program.
Вот конец программы. Может быть, я должен как-то поместить его в метод и вспомнить его в моем публичном забеге, но я не смог этого сделать и вести учет результатов. У меня много циклов, поэтому было бы нереально написать всю программу в одном цикле.
Спасибо!
public void run()
{
if (score >= 3)
{
println("You have passed the exam with 100%");
}
else if (counter<5)
{
counter++;
println("You're score is less than 100%.");
println(" ");
println("Try Again!");
//restart the questions until you're out of 5 attempts
}
else if (counter==5)
{
println("You're out of your 5 attempts");
}
}
2 ответа
Я думаю, вы хотите что-то подобное. Попробуйте - создайте класс и попробуйте этот код (это просто демонстрация. Вы можете увеличить количество вопросов и шаблон оценки в соответствии с вашим выбором. Впоследствии вам может потребоваться изменить код) -
public void display() {
int counter = 1;
List<String> list = new LinkedList<String>();
int score = checkAnswers(list);
if (score == 2) {
System.out.println("Your score is 100% in 1st attempt");
} else {
while (counter <= 5) {
counter++;
int newScore=checkAnswers(list);
if(newScore==2){
System.out.println("Your score is 100% in "+counter+" attempts");
break;
}
if(counter==5){
System.out.println("You have finished your 5 attempts. Please take the quiz later.");
break;
}
}
}
}
public List<String> questions() {
List<String> list = new LinkedList<String>();
Scanner scan = new Scanner(System.in);
System.out.println("type your 1st question ");
list.add(scan.nextLine());
System.out.println("type your 2nd question: ");
list.add(scan.nextLine());
return list;
}
public int checkAnswers(List<String> list) {
int score = 0;
list = questions();
List<String> answerList = new LinkedList<String>();
answerList.add("type answer of 1st question");
answerList.add("type answer of 2nd question");
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < answerList.size(); j++) {
if (list.get(i).equals(answerList.get(j))) {
score++;
}
}
}
return score;
}
Теперь в другом классе объявите метод main, а внутри него просто создайте объект этого класса и вызовите только метод display(). Надеюсь это поможет!:)
Если вы пытаетесь добиться сохранения данных после завершения программы, то стандартным способом сделать это будет записать это в файл. Кажется, вы хотели бы отслеживать счет и счет каждого отдельного студента. Вы можете сохранить отдельный файл для каждого учащегося или сохранить все свои данные в одном большом файле. Полезные форматы файлов могут быть XML, JSON или YAML. Я никогда не использовал его, но вы также можете изучить API настроек Java.