西蒙说反击不正常

时间:2016-04-19 04:37:10

标签: java

我正在编写一个Simon Says游戏,该游戏应该跟踪用户成功完成任务的次数。代码运行,但输出不正确。预期的输出为4,但我的代码输出了8。

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;
    }
}

2 个答案:

答案 0 :(得分:3)

所以我假设你通过角色,当第一次角色不匹配时,你会认为它“失败”并且只计算前面的匹配。

所以在这种情况下,您可以使用

if (s != u) {
  break;
}

打破循环;否则,只需增加计数。

我不喜欢亲自使用break,但只会编写一个函数来在字符不匹配时返回计数。

答案 1 :(得分:0)

正如你在问题中所说的那样输出是4但是我的代码输出了8。你想要从字符串的开头匹配多少连续字符。

这意味着您希望break在简单的

后循环
    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.