西蒙问(比较两个字符串中的字符)杀死无限循环

时间:2018-12-02 04:19:50

标签: loops for-loop while-loop infinite-loop

Simon Says的游戏规则将用户输入的字符序列的单个字符与每个相应的字符序列进行比较(Simon说)。 (假设两个序列的长度相同)。只要用户在与“ Simon Says”相同的位置处有相同的角色,用户就将其得分增加一。

我已经建立了for和while循环,分别从i = 0开始比较两个字符序列,但是,在终止循环方面存在一些问题。

任何评论都值得赞赏。谢谢。

这就是我所拥有的:

public class SimonSays {
public static void main (String [] args) {
  Scanner scnr = new Scanner(System.in);

  String simonPattern;
  String userPattern;
  int userScore;
  int i;

  userScore = 0;
  simonPattern = scnr.next();
  userPattern  = scnr.next();


 for (i=0; i<=simonPattern.length();i++) {
    while(userPattern.charAt(i) == simonPattern.charAt(i)){
          userScore += userScore; 
          continue;
     }
     while(userPattern.charAt(i)!=simonPattern.charAt(i)){
          break;
    }
 }

  System.out.println("userScore: " + userScore);

  return;
     }
 }

1 个答案:

答案 0 :(得分:0)

在循环范围内使用continuebreak时,其指的是最近的循环as you can see here)-因此,在{{1 }}循环他们引用它。

这导致无限循环:

while

while(userPattern.charAt(i) == simonPattern.charAt(i)){ userScore += userScore; continue; // this cause your infinity loop } continue循环上执行,因此条件需要改变-无限循环。

为了解决您的问题,请考虑使用以下代码:

while

由于int userScore = 0; for (; userScore < simonPattern.length(); userScore++) { if (userPattern.charAt(userScore) != simonPattern.charAt(userScore)) break; } //Value of userScore here is the number of times the if statement return false -> which mean mumber of same chars 是我们已经在模式中检查的字符数。

希望有帮助!