сравнивая строки, затем оценивая сравнение один раз - PullRequest
0 голосов
/ 10 февраля 2019

У меня проблема с домашним заданием, которую я почти решил, но что-то упустил.Задача «Саймон говорит» - игра памяти, в которой «Саймон» выводит последовательность из 10 символов (R, G, B, Y), и пользователь должен повторить последовательность.Создайте цикл for, который сравнивает две строки, начиная с индекса 0. Для каждого соответствия добавьте одну точку в userScore.При несоответствии выйдите из цикла с помощью оператора break.Предположим, что simonPattern и userPattern всегда имеют одинаковую длину.

Пример: Следующие шаблоны дают userScore 4 балла:

simonPattern: RRGBRYYBGY, userPattern: RRGBBRYBGY

Я должен только посчитать количество совпаденийодин раз пример должен считать совпадающие буквы только один раз.Вот мой код.

  String simonPattern;
  String userPattern;
  int userScore;
  int i;

  userScore = 0;
  simonPattern = scnr.next();
  userPattern  = scnr.next();

  /* Your solution goes here  */
   for (i=0; i < 10; ++i){

     if (simonPattern.charAt(i)==userPattern.charAt(i))
     {
        userScore+=1;
        }
     }


  System.out.println("userScore: " + userScore);

  return;
  }
}

Подсчитывает совпадения по позиции, но подсчитывает буквы дважды, поэтому я получаю это сообщение.

Тестирование: RRGBRYYBGY / RRGBBRYBGY Вывод отличается.Смотрите основные моменты ниже.

Ваш вывод userScore: 8 Ожидаемый результат userScore: 4

Есть предложения?

1 Ответ

0 голосов
/ 10 февраля 2019

Вы не завершили цикл, пока есть несоответствие.Используйте это:

if (simonPattern.charAt(i)==userPattern.charAt(i))
{
    userScore+=1;
}
else
    break;

Поскольку вы не прерываете цикл, первые 4 буквы и последние 4 буквы совпадают.Таким образом, ваш расчет дает вам 4 + 4 = 8.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...