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



这可能是一个非常新手的问题,但如果不使用for循环,我找不到一个答案。我有一个数组设置为常量,其中包含测试的正确答案。该程序接收用户输入,然后将其与常量数组进行比较,并计算正确答案的数量。我不应该导入任何库,并且应该使用while循环来完成该方法。我想通过ANSWER常量迭代用户输入,并为所有正确答案创建一个计数。这是我的类的一个片段(为了简单起见,我排除了提示用户回答的方法(

public class DriverExam{
public static final char[] ANSWER = {'B','D','A','A','C','A','B','A','C','D','B','C','D','A','D','C','C','B','D','A',};
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的的结果值卡住了

如注释中所述,您不能像这样比较数组。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','A','C','A','B','A','C','D','B','C','D','A','D','C','C','B','D','A',}; char[] driversAnswers = {'x','D','A','A','C','A','B','A','C','D','B','C','D','A','D','C','C','B','D','A',}; 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); } }
}
}

最新更新