Java如何在循环中运行程序并保持计数

时间:2015-10-30 05:20:51

标签: java if-statement acm-java-libraries

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

一旦计数器达到5分,分数小于3而不是打破程序并显示消息“稍后进行测验”

现在有什么工作: 如果你得到100%或低于100%,我能够跟踪“得分”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");
                    }
    }

2 个答案:

答案 0 :(得分:0)

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

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