2016-04-19 5 views
0

Я кодирую игру Simon Says, которая должна отслеживать, сколько раз пользователь успешно завершает задачу. Код работает, но вывод неверен. Ожидаемый выход 4, но мой код тушит 8.Simon Says counter не работает должным образом

import java.util.Scanner; 

public class SimonSays 
{ 
    public static void main (String [] args) 
    { 
     String simonPattern = ""; 
     String userPattern = ""; 
     int userScore = 0; 
     int i = 0; 

     userScore = 0; 
     simonPattern = "RRGBRYYBGY"; 
     userPattern = "RRGBBRYBGY"; 

     char s; 
     char u; 

     for (i = 0; i < 10; i++) { 
      s = simonPattern.charAt(i); 
      u = userPattern.charAt(i); 
      if (s == u) 
      { 
       userScore = userScore + 1; 
       continue; 
      } 
     } 

     System.out.println("userScore: " + userScore); 
     return; 
    } 
} 
+1

Это Java - не Javascript! –

+1

И почему 4? Когда 8 символов совпадают? –

+0

Прошу прощения, если я неправильно определил язык, я новичок в этом. Какое имя для этого языка кода? –

ответ

0

Как вы сказали в своем вопросе вывод 4, но мой код выделяется 8. Вы хотите, сколько непрерывного символа совпало с началом строки.

Это означает, что вы хотите break цикл только после того, как conscative

simonPattern = "RRGBRYYBGY"; 
    userPattern = "RRGBBRYBGY"; //Index 4 have different Characters . 


if (s == u) 
    { 
    userScore = userScore + 1; //add your counter 1 at each time character matched. 
    continue; //directly move to loop control statement. 
    } 

этот кусок кода будет проверять до последнего элемента, присутствующего в String и ваш счетчик будет многократно возрастает до последнего элемента String.

попробуйте этот код. будет работать

if (s != u) 
      { 
      break; //this will break your loop in just after character doesn't matched. 
      } 

     ++userScore; // Increase your counter if matched. 
3

Так что я предполагаю, что вы идете через символы и когда первый раз символы не совпадают, то вы будете считать это «провал» и рассчитывать только предыдущие совпадения.

Таким образом, в этом случае, вы можете использовать

if (s != u) { 
    break; 
} 

вырваться из петли; в противном случае просто увеличивайте счетчик.

Я не люблю использовать break лично, но просто напишет функцию, чтобы возвращать счетчик, если символы не совпадают.

Смежные вопросы