【发布时间】:2019-02-10 03:52:08
【问题描述】:
我有一个几乎解决了的家庭作业问题,但我遗漏了一些东西。问题, “Simon Says”是一款记忆游戏,其中“Simon”输出 10 个字符(R、G、B、Y)的序列,用户必须重复该序列。创建一个比较从索引 0 开始的两个字符串的 for 循环。对于每个匹配项,将一个点添加到 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
有什么建议吗?
【问题讨论】:
-
相反,我看到两个字符串之间共有 8 个字符。你应该在这里解释为什么你期望 4。
-
问题是在寻找 4,因为一旦匹配了字母,用户计数就会停止。测试在同一位置匹配 R 2 次,但应该匹配 R 一次然后得分 1,移动到 G 得分 1,移动到 B 得分 1,移动到 Y 得分 1,然后停止得分。