我正在编写一个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;
}
}
答案 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.