while 循环 运行 错误的次数

While loop running incorrect number of times

我在使用 while-loop 时遇到问题,因为 if 语句的目的是检查按钮是否为空(如果不重复)。但是,如果整个 if 语句位于 while-loop 中,它会在 运行 代码后首次显示大约 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,你必须初始化finishedfalse,然后当工作完成后设置finishedtrue退出循环

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;
     }    
 }