こんにちは私はスキャナの方法hasNextDouble()
に問題があります。 私のコードはファイルから読み込み、配列に追加するVehicle
オブジェクトを作成します。車両クラスには、OversizedVehicle
というサブクラスがあり、その高さを示すフィールドとしてdouble
が追加されています。だから私はif (hasNextDouble())
を使用しているので、スキャナがdouble
を読み取るとVehicle
の代わりにOversizedVehicle
オブジェクトが作成されます。ここに私のコードは次のとおりです。hasnextdoubleはファイル内の次のダブルを読み取っていません
while(s1.hasNext())
{
regNo = s1.next();
make = s1.next();
year = Integer.parseInt(s1.next());
description = s1.next();
if(s1.hasNextDouble() == true) {
height = s1.nextDouble();
vehicle = new OversizedVehicle(regNo,make,year,description,height);
}
else {
vehicle = new Vehicle(regNo, make, year, description);
}
System.out.println("New vehicles from file added to array in position " + count);
vehicles[count] = vehicle;
count++;
}
私は、Eclipse IDEを使用していますが、私はデバッグモードでこれを実行するとif
文は常に間違ってheight
変数に入力して、次regNo
を入れ、true
に評価されます。入力値がdouble
ではなく、int
です。私は何がうまくいかないのか分かりません。それはあなたの入力パラメータの彼らの数が異なっている車と特大車、のパラメータを含んでいるように思える
入力ファイルはどのようなものですか? – unjankify
大文字と小文字を区別して、この判読不能な段落を段落にして、 '' hasNextDouble() 'を定義して次の倍精度を読み込まないようにしてください。代わりに何が起こるのですか? – EJP