2016-11-27 11 views
0

私はJavaでBattleshipクローンを書いています。標準のShipクラスがあります。このクラスには、ユーザーからの入力を受け取るコンストラクタがあります。do-whileループでオブジェクトを繰り返しインスタンス化する方法はありますか?

船舶には、有効なブール値フィールドがあります。これは、船舶オブジェクトの構築後に計算されます。

私はShipが有効になるまでインスタンス化し続けたいが、コンパイラは "シンボルを見つけることができない(patrolBoats)"と言っている。どうして?これをどうやって回避するのですか?

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

それはスコープの問題ですか? –

+1

問題はありませんが、while(!patrolBoat.valid) 'を意味しますか? *ここに*無効なインスタンスを作成しようとしているようです。 –

+0

無効なオブジェクトを作成するのは、通常は良い設計とは考えられません。パラメータを検証するファクトリメソッドを用意し、パラメータが有効な場合にのみオブジェクトを作成する方がよいでしょう。 –

答えて

2

あなたは、ループ内patrolBoat変数を宣言しているので、while文のスコープではありません。

ループの前にShip patrolBoatを宣言します。

​​
関連する問題