Сравнение массивов символов с использованием алгоритма последовательного поиска? - PullRequest
0 голосов
/ 30 мая 2018

Я пишу программу, которая оценивает экзамен по вождению, но у меня возникают проблемы при сравнении правильных ответов с ответами, введенными пользователем.Мой второй метод продолжает возвращать целое число 1 для «** Неверных ответов: 1», когда это должно быть 5. Я специально сделал последние 5 вопросов некорректными для проверки.Я не уверен, что здесь происходит и что я делаю неправильно.Большая помощь будет оценена!

import java.util.Scanner;
public class DriverTest
{
   public static void main(String[] args)
   {
      Scanner kb = new Scanner(System.in);
      final int NUMBER_QUESTIONS = 20;
      char[] correct = {'A','A','A','A','A',
                        'B','B','B','B','B',
                        'C','C','C','C','C',
                        'D','D','D','D','D'};
  char[] student = new char[NUMBER_QUESTIONS + 1];
  System.out.println("Enter your answers to the exam questions.");

  for(int i = 1; i <= NUMBER_QUESTIONS; i++)
  {
     System.out.print("Question " + i + ": ");
     student[i] = kb.nextLine().toUpperCase().charAt(0);
  }
  System.out.println("** Incorrect answers: " + gradeExam(correct,student));
  }

  public static int gradeExam(char[] correct, char[] student)
  {

  for (int i = 0; i < correct.length; i++)
  {
     if(correct[i] != student[i])
     {
        i++;
        return 1;
     }
  }
  return 0;
  }
}

1 Ответ

0 голосов
/ 30 мая 2018

Ваша функция 'gradeExam' завершится при первом неправильном ответе и вернет 1, что и делает 'return'.

Вам нужно посчитать неправильные ответы, а затем вернуть это значение.Скорее:

int num_of_wrong_answers = 0;
if(correct[i] != student[i])
{
    num_of_wrong_answers ++;
}
return num_of_wrong_answers;

Вам нужно посчитать количество неправильных ответов, и только в конце функции должна быть вызвана return .

...