1

我创建了一个测验程序来跟踪学生的分数。我想要做的是,如果学生收到 100%,那么他们会收到一条消息,即他们的分数是 100%。如果分数小于 100,则程序应重新启动并将最多 5 次尝试的计数器保持在计数器整数中。

一旦计数器达到整数 5 且分数小于 3,则中断程序并显示消息“稍后进行测验”

现在的工作是什么:如果你得到 100% 或低于 100%,我能够跟踪“score”int 变量及其工作。

我正在尝试的工作:让“counter”int变量工作以记录尝试次数,以便用户最多尝试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");
                    }
    }
4

2 回答 2

0

如果您试图在程序完成后实现数据的持久性,那么执行此操作的标准方法是将其写入文件。您似乎想要跟踪每个学生的分数和计数。您可以为每个学生保存一个单独的文件,也可以将所有数据保存在一个大文件中。有用的文件格式可以是 XML、JSON 或 YAML。我从未使用过它,但您可能还希望探索Java Preferences API

于 2015-10-30T09:04:56.460 回答
0

我想你想要这样的东西。试一试——创建一个班级,试试这段代码(这只是一个演示,你可以根据你的选择增加问题的数量和评分模式。随后你可能需要修改代码)——

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() 方法。希望这可以帮助!:)

于 2015-10-30T10:59:03.287 回答