プログラムの開始時にテキストファイルの行数を読み込み、その多くのオブジェクトを新しい(Vehicle [])配列(最大4)に格納します。無限ループからループを止めようとするが、実行ごとに "中断"しないようにする
public boolean addVehicle(Vehicle[] Honda) throws FileNotFoundException
{
Scanner reader = new Scanner(file);
String strLine = "";
if(canAddVehicle() == true)
{
for(int i = 0; i < vehicles.length;i++)
{
System.out.println("This file is: " + file);
int counter = 0;
if(vehicles[i] == null)
{
try{
// Open the file that is the first
// command line parameter
FileInputStream fstream = new FileInputStream(this.file);
// Get the object of DataInputStream
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
//Read File Line By Line
while ((strLine = br.readLine()) != null) {
//Declare objects inside the array.
Honda[counter] = new Vehicle();
Honda[counter].readRecord(reader);
vehicles[counter] = Honda[counter];
counter++;
}
strLine = "";
//Close the input stream and scanner
reader.close();
in.close();
}catch (Exception e){//Catch exception if any
System.err.println("Error: " + e.getMessage());
}
}
break;
}
}
return true;
}
私はとのトラブルを抱えている部分は、この行です:プログラムが起動した後
if(vehicles[i] == null)
、ユーザーは、配列に新しい車を追加することを選択することができます。行ごとにコードを調べると、i = 0で始まり、プログラムが最初に実行したときに2行の値が見つかり、2つのオブジェクトが配列に格納されたとしましょう。 値0と1が使用されます。つまり、ユーザーが新しいVehicleを追加すると、if(vehicles[i] == null)
をスキップします。これは、spot [0]がNULLではないため、プログラムの先頭からの値が含まれているためです。
次に、break;
に至り、forループを遡って配列に他のヌル値がないかどうかをチェックすることなく、メソッドを起動します。 私はここで何ができますか?
プログラムを理解したい場合は、デバッガでコードをステップ実行することをお勧めします。うまくいけば、これはあなたが 'break;を置く必要があるところで動くのを助けるでしょう –
、どこで' i'を増やしますか? –
彼は "i ++"と言う場所を増やす –