Java 数错答案

Java 数错答案,java,Java,我正在尝试创建java应用程序。 它提出问题,每个问题有4个选项 我想计算用户选择的正确答案和错误答案的总数 我正在使用这样的函数- public void checkAnswer(String choice) { int correctcount=0; int wrongcount=0; if(counter==1) { if (choice.equalsIgnoreCase("a")) { correctAnswerDispla

我正在尝试创建java应用程序。 它提出问题,每个问题有4个选项

我想计算用户选择的正确答案和错误答案的总数

我正在使用这样的函数-

public void checkAnswer(String choice)
{
    int correctcount=0;
    int wrongcount=0;
    if(counter==1) {
        if (choice.equalsIgnoreCase("a")) {
            correctAnswerDisplay();
            correctcount = correct count + 1;
        } else {
            wrongAnswerDisplay();
            wrongcount = wroungcount + 1;
        }
    }
    else if(counter==2) {
        if (choice.equalsIgnoreCase("d")) {
            correctAnswerDisplay();
        } else {
            wrongAnswerDisplay();
        }
}
基本上,我对每个问题的答案都进行了硬编码。 例如,对于这个问题,正确答案是“A”。所以我说如果它是“a”,调用正确答案函数,否则问题1的答案就错了。计数器变量用于显示下一个问题

我如何计算所有问题的全部正确答案和错误答案。我已经允许用户在回答错误时选择另一个选项,这样他们在选择正确答案之前不会进入下一个问题。但每次他们选择错误的答案时,计数器将添加更多的数字,它应该只允许添加1个数字,然后停止添加

另外,假设我选择了错误的答案,我不会得到下一个问题,直到我点击“继续”按钮,并且“继续”按钮只有在我选择正确答案时才会出现。所以,若我选择错误的答案2次,计数器将是2。它应该工作,因为我选择错误的答案,甚至三次,总的错误答案计数应该只有1。每个人都会为每个问题选择一次正确答案,因为“继续”按钮在此之前不会出现。所以,若首先选择了错误答案,则不应增加正确计数器

对不起,我是一个新的程序员。请帮助。

package org.test.main;
package org.test.main;

import java.util.Scanner;

public class TestMain {

    public int correctcount = 0;
    public int wrongcount = 0;
    public int counter = 1; // lets assume you have counter as 1 to start with

    public void checkAnswer(String choice) {
        if (counter == 1) {
            if (choice.equalsIgnoreCase("a")) {
                correctAnswerDisplay();
                correctcount = correctcount + 1;
            } else {
                wrongAnswerDisplay();
                wrongcount = wrongcount + 1;
            }
        } else if (counter == 2) {
            if (choice.equalsIgnoreCase("d")) {
                correctAnswerDisplay();
                correctcount = correctcount + 1;
            } else {
                wrongAnswerDisplay();
                wrongcount = wrongcount + 1;
            }
        }
    }

    private void wrongAnswerDisplay() {
        System.out.println("Wrong");

    }

    private void correctAnswerDisplay() {
        System.out.println("Correct");
    }

    public static void main(String[] args) {

        TestMain testM = new TestMain();
        Scanner scanNext = new Scanner(System.in);
        for(int i = 0; i < 2;i++) {
            System.out.print("Question#"+(i+1)+": ");
            String ans = scanNext.nextLine();
            testM.checkAnswer(ans);
            testM.counter++;
        }

        System.out.println("Number of Correct Answer:" + testM.correctcount);
        System.out.println("Number of Wrong Answer:" + testM.wrongcount);

    }
}
导入java.util.Scanner; 公共类TestMain{ 公共计数=0; 公共整数错误计数=0; public int counter=1;//假设您的计数器是1 公共无效检查应答(字符串选择){ 如果(计数器==1){ if(选择同等信号案例(“a”)){ correctAnswerDisplay(); correctcount=correctcount+1; }否则{ 错误答案显示(); 错误计数=错误计数+1; } }否则如果(计数器==2){ if(选择同等信号情况(“d”)){ correctAnswerDisplay(); correctcount=correctcount+1; }否则{ 错误答案显示(); 错误计数=错误计数+1; } } } 私有无效错误应答显示(){ System.out.println(“错误”); } 私有void correctAnswerDisplay(){ 系统输出打印项次(“正确”); } 公共静态void main(字符串[]args){ TestMain testM=newtestmain(); Scanner scanNext=新扫描仪(System.in); 对于(int i=0;i<2;i++){ 系统输出打印(“问题#”+(i+1)+“:”; 字符串ans=scanNext.nextLine(); testM.checkAnswer(ans); testM.counter++; } System.out.println(“正确答案数:+testM.correctcount”); System.out.println(“错误答案数:+testM.ErrorCount”); } }
correctcount
errocount
作为实例变量。因为每次调用checkAnswer()方法时,都会在方法中创建的两个变量中指定0


我试着模仿你的逻辑。所以试试这个。问题和答案的编号是硬编码的。所以,在你的逻辑中改变它,使之成为动态的。我写这段代码是为了理解增量是如何工作的。

您已经开始使用Stackoverflow之类的社区,这真是件好事

从问题中可以明显看出,只有选择正确答案时,才会启用“继续”按钮。(那么,计算正确答案就没有意义了,因为有了这样一个按钮,最后你会得到所有问题的正确答案。无论如何,如果你真的想让这个逻辑起作用,试试下面的方法。)

让我们创建一个方法
incrementErrorCount()
来增加变量ErrorCount

public class AnswerTester{
    int correctcount = 0;
    int wrongcount = 0;

    /*Following variable indicates whether you have selected any wrong answers before
    selecting the right answer. Obviously its default value is false since you 
    have selected no wrong answers (in fact no answers) when you first
    you first answers a question*/
    boolean wronganswerselected = false; 

    public void checkAnswer(int counter, String choice){
       if(counter==1) {
            if (choice.equalsIgnoreCase("a")) {
                correctAnswerDisplay();
                correctcount = correctcount + 1;
                incrementWrongCount();
                wronganswerselected = false;//For the next question
                enableContinueButton();
            } else {
                wrongAnswerDisplay();
                wronganswerselected = true;//just indicate that you have selected a wrong answer. We will increment wrong count in incrementWrongCount()
                disableContinueButton();
            }
        } else if(counter==2) {
            if (choice.equalsIgnoreCase("d")) {
                correctAnswerDisplay();
                correctcount = correctcount + 1;
                incrementWrongCount();
                wronganswerselected = false;
                enableContinueButton();
            } else {
                wrongAnswerDisplay();
                wronganswerselected = true;
                disableContinueButton();
            }
        }
    }

    private void incrementWrongCount(){
        if(wronganswerselected){//Should increment wrongcount only if the user have selected atleast one wrong answer.
            wrongcount = wrongcount + 1;
        }
    }

    private void correctAnswerDisplay(){
        System.out.println("Correct..");
    }

    private void wrongAnswerDisplay(){
        System.out.println("Wrong..");
    }

    public int getCorrectCount(){
        return correctcount;
    }

    public int getWrongCount(){
        return wrongcount;
    }

}

使用switch而不是if…else if将一个变量与多个值进行匹配是一种很好的做法。

每次调用
checkAnswer()
correctcount
errocCount
的值都将设置为0,假设目的是查看每个问题是否至少有一个错误答案,您应该使用标志而不是计数器。如果你有更多的问题,一个交换的情况会比一个如果…否则。。。在性能方面。它只决定必须执行哪种情况,而不是检查满足哪种情况。请确保发布编译的代码。这个代码并不抱歉,我仍然感到困惑。所以,如果我像这样修改代码,告诉我们你得到了什么。编辑你的帖子以帮助他人。如果我先选择了错误的答案,这仍然是正确答案。嘿嘿。如果您先输入“a”。这是正确的。在你的代码里。如果你把另一个字符串放在“a”上,它会给你错误的答案。然后计数器将移到2,这是“d”是正确答案。检查一下。如果我的答案对你有帮助的话。请检查以帮助其他人。这是有效的…你是一个天才…非常感谢你。上帝保佑你:)