【问题标题】:comparing two arrays, increasing counter比较两个数组,增加计数器
【发布时间】:2017-06-29 15:44:59
【问题描述】:

我无法理解为什么即使我输入了所有正确答案,我的计数器仍会不断打印出不同的值。我已经尝试了我能想到的一切以及研究,但仍然没有运气。请帮忙,这是我在这个“简单”程序上工作的第 14 个小时。

import java.util.Scanner; //import scanner

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 singleAnswer = ' ';
  int number_Correct = 0;
       for(int i = 0; i < 15; i++) //print question numbers/takes user input
          {
      System.out.println("Question " + (i + 1) + ":");
         singleAnswer = input.nextLine().charAt(0);
          }//end of for loop

   System.out.println("number correct: " +
        total_correct_answers(correctAnswers, singleAnswer));
  }//end of main

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

      for (int i = 0; i < 15; i++){
         if(correctAnswers[i] == singleAnswer){
             number_correct++;}

        }//end of for loop
    return number_correct;
    }//end of correct method
  }//end of class

【问题讨论】:

  • 您应该添加程序正在执行的操作,并举例说明预期的输出和您得到的结果。

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


【解决方案1】:

您的程序显示错误值的原因是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

【讨论】:

  • 非常感谢你们,你们不知道这对我来说有多大压力。我其实明白我做错了什么:)
【解决方案2】:

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

char[] singleAnswer=new char[15];

并将结果添加到数组中:

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

在for循环中用这条指令查看结果是否正确后:

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

【讨论】:

    猜你喜欢
    • 2010-12-21
    • 1970-01-01
    • 2018-05-13
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 2012-12-26
    • 2021-03-21
    • 2019-02-20
    相关资源
    最近更新 更多