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

Java 编写一个程序,将用户的输入作为数组,并将其与另一个数组进行比较,以使用while循环检查正确答案,java,methods,while-loop,Java,Methods,While Loop,这可能是一个真正的新手问题,但我无法找到一个没有使用for循环的答案。我将一个数组设置为常量,其中包含测试的正确答案。程序接收用户输入,然后将其与常量数组进行比较,并计算正确答案的数量。我不需要导入任何库,应该使用while循环完成该方法。 我想通过ANSWER常量遍历用户输入,并为所有正确答案创建一个计数。 下面是我的类的一个片段(我排除了提示用户回答以保持简单的方法)\ public int getTotalCorrectAnswers(){ int correct=0; int指数=0;

这可能是一个真正的新手问题,但我无法找到一个没有使用for循环的答案。我将一个数组设置为常量,其中包含测试的正确答案。程序接收用户输入,然后将其与常量数组进行比较,并计算正确答案的数量。我不需要导入任何库,应该使用while循环完成该方法。 我想通过ANSWER常量遍历用户输入,并为所有正确答案创建一个计数。 下面是我的类的一个片段(我排除了提示用户回答以保持简单的方法)\

public int getTotalCorrectAnswers(){
int correct=0;
int指数=0;
while(索引<答案长度){
索引++;
如果(驾驶员回答等于(回答)){
正确的++;
}
系统输出打印项次(索引);
系统输出打印项次(正确);
}
返回正确;
这个问题很可能与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;
public int getTotalCorrectAnswers(){
int correctAnswer=0;
int指数=0;
while(索引<答案长度){
如果(回答[索引]==驾驶员回答[索引]){
正确答案++;
索引++;
}            
//系统输出打印项次(索引);
系统输出打印项次(正确答案);
}
返回正确答案;

在几次尝试中,我得到了一些实际的计数,但它似乎会在遇到不同的值时停止计数器。但就目前情况而言,我的结果值为0,正如注释中所述,您无法比较这样的数组。
driverAnswers.equals(答案)
仅比较引用,在这种情况下,它将返回false,因为引用不同。如果要检查数组是否相等,可以使用
Arrays.equals(arr1,arr2)
。在这种情况下,将对数组中的每个元素调用
equals
方法。如果数组中的对象正确重写此方法,则此方法将返回所需的结果

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

编辑:因为你不需要else案例,我在这里做了一些编辑

while(index < ANSWER.length){
    if(driverAnswer[index] == ANSWER[index])
        correct++
    index++
}
while(索引
首先检查两个数组的大小必须相等,如果相等,则可以直接使用数组。对于所有正确答案,使用equals方法,否则可以循环选择正确答案,请查看下面的简单迭代

int correctAnswer=0;
if(ANSWER.length==driversAnswers.length){
if(数组.equals(应答,驱动器应答))
System.out.println(“正确答案:+driversAnswers.length”);
否则{

对于(int i=0;i您在(索引index
so
{
将循环forever@ScaryWombat我之前把它放在那里,然后在修补东西的时候把它删除了。即使我有index++;在那里,它的增量很好,但即使我正确输入了所有答案,正确的计数器也不会递增。我不确定if(driversAnswers.equals(ANSWER))是否是此处要生成的正确表达式。调试器遍历两个局部变量,然后继续执行while循环并获取IF语句,然后直接跳到我的println语句。不,您不能比较像
IF(driversAnswers.equals(ANSWER))这样的数组
您需要遍历数组检查每个元素。小心数组的大小可能不同。@ScaryWombat所以我现在的问题是了解如何遍历数组并检查每个元素。用您尝试过的内容编辑您的问题,如果不起作用,将提供帮助。您好,谢谢r回答。当我使用你建议的while循环时,我得到了一个无限循环。即使我输入了所有正确的答案,它也永远不会到达correctAnswer+,因此我没有得到任何正确答案的计数。我在开始时告诉过你,你必须检查两个数组的大小,两个数组的大小都等于
Arrays.equals(回答,驾驶员回答)
此语句将起作用。由您的条件引起的无限循环。有意义的是,您的索引最初为0,除非达到它将执行的最大数组大小。因此,index0Hi@h4x9r,这似乎起作用,但似乎发生的是当我运行这个方法,如果它遇到一个不正确的值,它会停止计数,即使后续的一些输入是正确的答案。我在这里的目标是迭代列表,并增加用户输入的每个正确答案的计数。现在,它似乎只是在输入错误答案后放弃。不幸的是不理解它,这应该可以工作:while(index 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;
while(index < ANSWER.length){
    if(driverAnswer[index] == ANSWER[index])
        correct++
    index++
}
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);
            }
        }
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);
        }
    }