比较字符串,然后评分一次

时间:2019-02-10 03:52:09

标签: java loops for-loop

我有一个几乎解决的家庭作业问题,但我缺少一些东西。问题, “ 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

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

存在不匹配时,您尚未终止循环。使用这个:

if (simonPattern.charAt(i)==userPattern.charAt(i))
{
    userScore+=1;
}
else
    break;

因为您没有打破循环,所以前4个字母和后4个字母是匹配的。因此您的计算结果为4 + 4 = 8。