【问题标题】:While Loop Repeating forever when printing statement打印语句时循环永远重复
【发布时间】:2017-11-08 12:28:15
【问题描述】:

我正在制作一个用户猜颜色的刽子手游戏。我想要发生的是:如果用户错误地得到超过 5 个,(经历了所有 5 个提示),它将表明用户丢失了。在 while 循环结束后(这个词是正确的或通过了所有 5 个提示),它应该告诉你你是否赢了。 这是执行此操作的代码部分:

public static void main(String[] args){
  Scanner in = new Scanner(System.in);
  String color = getColor();
  String result = EmptyStr(color);
  String[] hints = getHints(color);
  System.out.println("Please enter a letter:");
  char letter = in.next().charAt(0);
//-----------------------------------------------------------
  int wrong = 0;
  while (wrong<6){
    if (checkLetter(color, letter)){
      // result was previously defined elsewhere so don't worry about it
      result = Result(color, result, letter);
      System.out.println("Correct guess! here is your word so far: " + result);
      System.out.println("Lifelines left: " + (5 - wrong));
      if (result.equals(color)){
        System.out.println("congratulations! You Won!");
        break;
      }
    }
    else{
      wrong ++;
      System.out.println(hints[0]);
      System.out.println("Lifelines left: " + (5 - wrong));
    }
  }
  // also not sure what to put here after player wins or loses: System.out.println("Sorry! You lost! The correct word was: " + color);

}

但是,一旦我输入了一个字母,并且它是正确的, result = Result(color, result, letter); System.out.println("Correct guess! here is your word so far: " + result); System.out.println("Lifelines left: " + (5 - wrong)); 永远重复。我想知道:为什么它会永远重复?还有,我该如何修复它才能正常工作?

【问题讨论】:

  • 假设checkLetter 返回true 它只会在result 等于color 时返回break - 如果不是,它将循环
  • @ScaryWombat 但我什至无法重新输入另一个字符来检查它是否是颜色中的字符
  • 在这种情况下,您需要整理出您的逻辑。也许您想将char letter = in.next().charAt(0); 移动到您的循环中
  • @ScaryWombat 是的,我在移动它之后才意识到!谢谢你告诉我! :)

标签: java while-loop java.util.scanner


【解决方案1】:

我发现了自己的问题!

问题是,为了让它重申并允许我重新输入一封信, char letter = in.next().charAt(0); 必须在 while 循环内。这解决了整个问题!

【讨论】:

    【解决方案2】:

    我想我看到了这个问题。当用户猜对时,您没有迭代,只有当猜错时。确保在第一个 if 中添加另一个“错误 ++”。这可能会解决问题。

    if (checkLetter(color, letter)){
          // result was previously defined elsewhere so don't worry about it
          result = Result(color, result, letter);
          System.out.println("Correct guess! here is your word so far: " + result);
          System.out.println("Lifelines left: " + (5 - wrong));
          wrong ++;
    

    【讨论】:

      猜你喜欢
      • 2020-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多