比较两个数组,增加计数器

时间:2017-02-11 08:28:11

标签: java arrays loops methods pass-by-value

我很难意识到为什么即使我输入了所有正确的答案,我的计数器仍会打印出不同的值。我已经尝试了所有我能想到的东西以及研究,但仍然没有运气。请帮助,这是我工作的第14小时"简单"程序

gem 'ckeditor', github: 'galetahub/ckeditor', ref: '11d3a5b'

2 个答案:

答案 0 :(得分:0)

您的程序显示错误值的原因是singleAnswer变量仅存储用户给出的最后一个值/答案。

我创建了一个数组userAnswer来存储给出的所有答案。

试试这个:

public class DriverTestBlah {
  public static void main(String [] args){

    Scanner input = new Scanner(System.in);
    char[] correctAnswers = {'A','D','C','A','A','D','B',
    'A','C','A','D','C','B','A','B'};
    char[] userAnswer = new char[correctAnswers.length];

    for(int i = 0; i < 15; i++) //print question numbers/takes user input
    {
      System.out.println("Question " + (i + 1) + ":");
      userAnswer [i] = input.nextLine().charAt(0);
    }//end of for loop

    System.out.println("number correct: " + total_correct_answers(correctAnswers, userAnswer));

    input.close();
  }//end of main

  public static int total_correct_answers(char []correctAnswers,char [] userAnswer) {
    int number_correct = 0;

    for (int i = 0; i < 15; i++){
        if(correctAnswers[i] == userAnswer[i]){
            number_correct++;
        }
    }//end of for loop
    return number_correct;
  }//end of correct method
}//end of class

答案 1 :(得分:0)

对于每个问题,您在数组中都有正确答案 correctAnswers 并且用户回答在哪里?在 singleAnswer 中的此模式下,您只保存用户的最后一个答案,并针对每个答案进行检查。 要解决这个问题,你可以像这样创建一个singleAnswer的char数组:

char[] singleAnswer=new char[15];

结果在数组中添加:

singleAnswer[i]=input.nextLine().chatAt(0);

在for循环中使用此指令查看结果是否正确之后:

if(singleAnswer[i]==correctAnswers[i])  number_correct++;