我有一个几乎解决的家庭作业问题,但我缺少一些东西。问题, “ Simon说”是一款记忆游戏,其中“ Simon”输出10个字符(R,G,B,Y)的序列,用户必须重复该序列。创建一个for循环,比较从索引0开始的两个字符串。对于每个匹配项,将一个点添加到userScore。不匹配时,使用break语句退出循环。假设simonPattern和userPattern的长度始终相同。
Ex:以下模式产生的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 输出有所不同。请参阅下面的重点内容。
您的输出用户得分:8 预期输出userScore:4
有什么建议吗?
答案 0 :(得分:0)
存在不匹配时,您尚未终止循环。使用这个:
if (simonPattern.charAt(i)==userPattern.charAt(i))
{
userScore+=1;
}
else
break;
因为您没有打破循环,所以前4个字母和后4个字母是匹配的。因此您的计算结果为4 + 4 = 8。