如何在 do-while 循环中重复实例化一个对象?

How to repeatedly instantiate an object in a do-while loop?

我正在 Java 中编写战舰克隆版。我有一个标准的 Ship class,它有一个接受用户输入的构造函数。

船有一个布尔字段,valid,它是在船对象构造后计算的。

我想继续实例化 Ship 直到它有效,但编译器抛出一个 "cannot find symbol (patrolBoats)"。为什么?我该如何解决这个问题?

do {
    Ship patrolBoat = new Ship(2, "Patrol Boat", promptInputForEnds("Patrol Boat", 2, kboard));
} while (patrolBoat.valid);

您在循环内声明了 patrolBoat 变量,因此它不在 while 语句的范围内。

在循环之前声明Ship patrolBoat

Ship patrolBoat;
do {
  patrolBoat = ...
} while (patrolBoat.valid);