创建一个for循环,用于比较从索引0开始的两个字符串。
对于每场比赛,将一个点添加到userScore。在不匹配时,使用break语句退出循环。
Ex:以下模式产生的userScore为4: simonPattern:R,R,G,B,R,Y,Y,B,G,Y userPattern:R,R,G,B,B,R,Y,B,G,Y
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 goes here */
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;
}
}
系统说:
Runtime error (commonly due to an invalid array/vector access, divide by 0, etc.).
为什么我的代码不起作用?
答案 0 :(得分:3)
而不是硬编程你的字符串的长度(只是因为在你应该用手指计算它之前你可能错了)你可以使用
for (int i=0; i < simonPattern.length(); i++)
快乐编码
编辑:但它也可以生成异常,因为userPattern可能小于simonPattern。您可以通过
进行检查if (simonPattern.length() == userPattern.length()) {
userScore = userScore + 1;
continue; // this is not really needed but it may if having more else-if
} else{
break; // This will break the loop as soon as it finds a mismatch
}
答案 1 :(得分:2)
错误在于:
for (i=0;i<=10;i++) {
改变
for (i=0;i<10;i++) {
你的字符串长度= 10。
答案 2 :(得分:1)
for (i=0;i<=10;i++) {
将执行11次(0到10)并且您的字符串中只有10个元素。将行更改为for (i=0;i<10;i++) {
将执行适当的次数,不应抛出任何异常。