読み込みには最大4行のテキストファイルがあります。各行には、タブで区切られた文字列と整数の混合物があります。オブジェクトを行ごとに配列に格納しながらファイルを1行ずつ読み込みます。
私のプログラムは、1行を読み込み、すべての情報を適切な場所に保存し、新しいオブジェクトを配列に格納することに成功しました。
問題:複数の行を読み取る方法と、読み取った行に応じて配列に新しいオブジェクトを格納する方法を理解できません。
public void addVehicle(Vehicle Honda[]) throws FileNotFoundException
{
Scanner reader = new Scanner(file);
if(canAddVehicle() == true)
{
for(int i = 0; i < vehicles.length; i++)
{
if(vehicles[i] == null)
{
Honda[i] = new Vehicle();
Honda[i].readRecord(reader);
vehicles[i] = Honda[i];
reader.close();
break;
}
}
System.out.println("Vehicle Added!");
}
else
{
System.out.println("You can not add more than 4 vehicles.");
}
}
とreadRecord()メソッド:
public void readRecord(Scanner reader)
{
while(reader.hasNextLine())
{
setMake(reader.next());
setModel(reader.next());
setYear(reader.nextInt());
setvin(reader.next());
setValue(reader.nextDouble());
setMilesDriven(reader.nextInt());
setLastOilChange(reader.nextInt());
}
reader.close();
}
「reader.close()」を2回呼び出す – ComputerSaysNo
車両配列の長さを宣言して初期化していますか?また、Javaの規約をもう少し詳しく読んでみることをお勧めします。ほとんどの構文規則に正しく従っているわけではありません。たとえば、ホンダは大文字で入力しないでください。通常は、クラスのみが大文字になります。また、 'Vehicle [] honda'のように、配列の左側に括弧を移動することをお勧めします。 – Andrew
'if(canAddVehicle()== true)'は 'if(canAddVehicle())'と同じです。また、 'スキャナリーダー=新しいスキャナ(ファイル);'を 'if'ブロック内で移動することもできます。 –