编写一个将用户输入作为数组并将其与另一个数组进行比较以使用while循环检查正确答案的程序

这可能是一个真正的新手问题,但是如果不使用for循环,我很难找到答案。我将一个数组设置为常量,其中包含测试的正确答案。该程序接收用户输入,然后将其与常量数组进行比较,并计算正确答案的数量。我不必导入任何库,而应该使用while循环来完成该方法。 我想遍历通过ANSWER常数输入的用户,并为所有正确答案创建一个计数。 这是我的课程的摘录(我已经排除了提示用户输入答案以简化操作的方法)。\

public class DriverExam{
public static final char[] ANSWER = {'B','D','A','C','B',};
private char[] driversAnswers;
InputReader reader;

public DriverExam(){
    reader = new InputReader();
    driversAnswers = new char[20];

}
public int getTotalCorrectAnswers(){
        int correct = 0;
        int index = 0;
        while (index < ANSWER.length){
            index++;
            if(driversAnswers.equals(ANSWER)){
                correct++;
            }
            System.out.println(index);
            System.out.println(correct);
        }
        return correct;

该问题最有可能与if语句有关,但是我似乎找不到找到遍历数组索引并将它们与另一个数组进行比较的方法。

编辑:我当前的方法如下:

 public int getTotalCorrectAnswers(){
    int correctAnswer = 0;
    int index = 0;        
    while(index < ANSWER.length){
        if(ANSWER[index]==driversAnswers[index]){
            correctAnswer++; 
            index++;
        }            
        // System.out.println(index);
        System.out.println(correctAnswer);

    }
    return correctAnswer;

经过几次尝试,我得到了一些实际计数,但似乎计数器一旦遇到不同的值就会停止计数。但就目前情况而言,我的结果值始终为0

zhuzhu1107 回答:编写一个将用户输入作为数组并将其与另一个数组进行比较以使用while循环检查正确答案的程序

如注释中所述,

不能像这样比较数组。 driverAnswers.equals(ANSWER)仅比较引用,在这种情况下它将返回false,因为引用是不同的。如果要检查数组是否相等,可以使用Arrays.equals(arr1,arr2)。在这种情况下,将对数组中的每个元素调用equals方法。如果数组中的对象正确覆盖了此方法,则此方法将返回所需的结果。

但是,您提到没有使用其他库。 然后,最简单的解决方案是遍历每个元素并检查是否相等

编辑:因为您不需要其他情况,所以我在这里做了一些编辑

while(index < ANSWER.length){
    if(driverAnswer[index] == ANSWER[index])
        correct++
    index++
}
,

首先,您要检查两个数组的大小是否必须相等,如果可以,则可以直接使用 Arrays.equals 方法获得所有正确答案,否则可以遍历正确答案,请查看下面的简单迭代

int correctAnswer = 0;
        if(ANSWER.length == driversAnswers.length){
            if(Arrays.equals(ANSWER,driversAnswers))
                System.out.println("correct answer: " + driversAnswers.length);
            else{
                for (int i=0;i<ANSWER.length;i++) {
                    if(ANSWER[i]==driversAnswers[i])
                        correctAnswer++;
                }
            System.out.println("correct answer: " + correctAnswer);
            }
        }
  

您可以在此处使用while循环,而不要使用

int correctAnswer = 0,index=0;
    if(ANSWER.length == driversAnswers.length){
        if(Arrays.equals(ANSWER,driversAnswers))
            System.out.println("correct answer: " + driversAnswers.length);
        else{
            while (index<ANSWER.length) {
                if(ANSWER[index]==driversAnswers[index])
                    correctAnswer++;
                index++;
            }
        System.out.println("correct answer: " + correctAnswer);
        }
    }
  

使用此作为您的参考书

import java.util.Arrays; class Test{ public static void main(String[] args) { char[] ANSWER = {'B','D','A','C','B',}; char[] driversAnswers = {'x',}; int correctAnswer = 0,index=0; if(ANSWER.length == driversAnswers.length){ if(Arrays.equals(ANSWER,driversAnswers)) System.out.println("correct answer: " + driversAnswers.length); else{ while (index<ANSWER.length) { if(ANSWER[index]==driversAnswers[index]) correctAnswer++; index++; } System.out.println("correct answer: " + correctAnswer); } }
}
}

本文链接:https://www.f2er.com/3154911.html

大家都在问