【发布时间】:2017-04-08 11:20:44
【问题描述】:
我正在重新处理 For 循环上的一个班级问题,并且无法从运行分数中获得总分。我尝试使用字符串比较,但这可能是问题所在。作业是:
“Simon Says”是一款记忆游戏,其中“Simon”输出 10 个字符(R、G、B、Y)的序列,用户必须重复该序列。创建一个比较从索引 0 开始的两个字符串的 for 循环。对于每个匹配项,将一个点添加到 userScore。在不匹配时,使用 break 语句退出循环。例如:以下模式产生的 userScore 为 4:
simonPattern: RRGBRYYBGY
用户模式:RRGBBRYBGY
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";
/* Your solution begins here */
String ss1 = simonPattern.substring(0, 2);
String us1 = userPattern.substring(0, 2);
String ss2 = simonPattern.substring(2, 3);
String us2 = userPattern.substring(2, 3);
String ss3 = simonPattern.substring(4, 5);
String us3 = userPattern.substring(4, 5);
String ss4 = simonPattern.substring(6, 7);
String us4 = userPattern.substring(6, 7);
String ss5 = simonPattern.substring(8, 9);
String us5 = userPattern.substring(8, 9);
for (i = 0; i < simonPattern.length(); i++) {
if (ss1.equals(us1)) {
userScore = userScore + 1;
}
if (ss2.equals(us2)){
userScore = userScore + 1;
}
if (ss3.equals(us3)){
userScore = userScore + 1;
}
if (ss4.equals(us4)){
userScore = userScore + 1;
}
if (ss5.equals(us5)){
userScore = userScore + 1;
}
else{
break;
}
}
/* ^ Your solution goes here ^ */
System.out.println("userScore: " + userScore);
return;
}
}
【问题讨论】:
-
不要使用
==来比较字符串。请改用equals()方法。例如:if (ss1.equals(us1)) { ... } -
谢谢。我做了一些更改,现在总数是 40 而不是 4。我试图用 string.length() 停止循环,但我仍然感到困惑。
-
@L.Lab1 当您重复完全相同的代码 10 次时,您认为会发生什么?
simonPattern的长度为 10,因此您循环了 10 次,但循环内的代码不使用i做任何事情,所以如果 4 个是好的答案(包括 #5),那么您将得分加 4,10 次,对于总共 40 个。 -
是的,我看到了,不知道怎么解决。我不确定如何设置 For Loop 语句以两个字符为一组进行交互。当我设置 i