Java 循环运行的次数不正确

Java 循环运行的次数不正确,java,random,while-loop,boolean,Java,Random,While Loop,Boolean,我在执行while循环时遇到问题,因为if语句用于检查按钮是否为空(如果不重复)。但是,如果整个if语句位于while循环中,则在第一次运行代码后会显示大约4个按钮 case HINT: Random random = new Random(); int size = SizeOfPuzzle.currentRows; int randomNumber1 = random.nextInt(size); int randomNumber2 = random.next

我在执行
while循环时遇到问题,因为if语句用于检查按钮是否为空(如果不重复)。但是,如果整个if语句位于
while循环中,则在第一次运行代码后会显示大约4个按钮

case HINT:
    Random random = new Random();
    int size = SizeOfPuzzle.currentRows;
    int randomNumber1 = random.nextInt(size);
    int randomNumber2 = random.nextInt(size);
    if (puzzlePanel.arrayOfButtons[randomNumber1][randomNumber2].getText().isEmpty()) {
       puzzlePanel.arrayOfButtons[randomNumber1][randomNumber2].setText(puzzle.getSingleLetter(randomNumber1, randomNumber2) + "");
    }else {
       boolean finished = true;
       while (!finished) {
          randomNumber1 = random.nextInt(size);
          randomNumber2 = random.nextInt(size);
          if (puzzlePanel.arrayOfButtons[randomNumber1][randomNumber2].getText().isEmpty()) {
              puzzlePanel.arrayOfButtons[randomNumber1][randomNumber2].setText(puzzle.getSingleLetter(randomNumber1, randomNumber2) + "");
              break;
          }

       }
    }
break;

如果要输入while,则必须将
finished
初始化为
false
,然后在作业完成后将
finished
设置为
true
以退出循环

boolean finished = false;
while (!finished) {
//     ↑ ↑ ↑ ↑ ↑ →→→→→→ this means loop while finished == false 
    randomNumber1 = random.nextInt(size);
    randomNumber2 = random.nextInt(size);
    if (puzzlePanel.arrayOfButtons[randomNumber1][randomNumber2].getText().isEmpty()) {
        puzzlePanel.arrayOfButtons[randomNumber1][randomNumber2].setText(puzzle.getSingleLetter(randomNumber1, randomNumber2) + "");
        finished = true;
     }    
 }

你有什么问题?您需要为您的帖子增加清晰性。
前一行(!finished)
您将
finished
设置为
true
,由于
,因此该条件不会被评估为
true
!true
false
。请阅读:。@BrettWalker澄清我如何纠正我的问题,因为循环似乎没有运行。在某些情况下,如果不多次单击菜单选项,就不会重复在阵列中找到清除按钮。谢谢您的澄清。确定主要问题是完成=真;就在while循环开始之后。愚蠢的小错误。