【问题标题】:while loop not updating i after each iterationwhile 循环在每次迭代后不更新 i
【发布时间】:2013-06-25 06:18:28
【问题描述】:
    while (var<10)  
        {

        String line=keyboard.nextLine();
        input = line.charAt(0);

        game.makeGuess(input);
        game.getDisguisedWord();
        game.isFound();
        System.out.println(game.getDisguisedWord());
        System.out.println(game);
        System.out.println(game.getWrong());
        int i=0;
        i++;
        if (var<i+game.getDisguisedWord().length()-1)
            System.out.print("Guess #" + game.guessCount()+": ");
        var=game.getWrong();
        if (game.isFound())
            var=10;
    }

不知道出了什么问题,但如果我打印出 i,它只会停留在 1。我需要这样做才能让某些东西停止打印:(

【问题讨论】:

  • 把'int i=0;'退出while循环。
  • game.getWrong() 返回什么?您在哪里更改 var 的值?为什么要在循环内初始化int i=0;

标签: java loops while-loop


【解决方案1】:

int i=0 是错误。它在每次迭代中将 i 初始化为 0,因此在下一步中 i++ 之后,您的 i 值将保持为 1。要只初始化一次,请将其放在 while 循环之外。

【讨论】:

    【解决方案2】:

    你需要放

    int i = 0; 
    

    上方

        while (var<10)  
            {
    

    这是因为您每次循环时都调用了“i”变量,然后使用 i++,它始终为“1”。因此不会将其保存到下一个循环。

    【讨论】:

      【解决方案3】:

      您在每次迭代中都初始化 i。

      int i = 0;
      

      必须在循环体之外,在循环之前。把

      String line = keyboard.nextLine();
      

      在循环体之外也是如此。 'line' 也不需要在每次迭代中都初始化。

      【讨论】:

        【解决方案4】:

        在您的代码中,i 将被视为局部变量,每次循环完成一次迭代,i 将被销毁。

        在下一次迭代中,i 将被创建并初始化为 0。您需要在 while 循环之外初始化此变量。

        【讨论】: