2011-12-06 6 views
2

vehicles配列に新しい車両(Honda)を追加する方法があります。配列には最大4台の車両が含まれています。私の方法では、配列を通過中にforループを残すことはできません

Vehicle[] vehicles = new Vehicle[4]; 

方法はnull値がある場合vehicles配列の末尾に1つの新しいVehicleオブジェクトを追加することになっています。問題は、配列のnullのすべての値に書き込んでいて、1に書き込んだ後にforループから蹴り出しているということです。ここで

は、私が持っているもの(注 - 私が代わりに ArrayListの配列を使用するために必要なのです)です:

public void addVehicle(Vehicle Honda[]) throws FileNotFoundException 
{ 
    boolean found = false; 
    if(canAddVehicle() == true) 
    { 
     for(int i = 0; i < vehicles.length || !found; i++) 
     { 
      if(vehicles[i] == null) 
      { 
       Scanner reader = new Scanner(file); 
       Honda[i] = new Vehicle(); 
       Honda[i].readRecord(reader); 
       vehicles[i] = Honda[i]; 
       reader.close(); 
       found = true; 
      } 

     } 
     System.out.println("Vehicle Added!"); 

    } 
} 

私はそれは、すぐにそれを見つけたように、ループのために葉を確認するfound = trueを設定したが配列の最初のnullの値ですが、動作していないようです。これはなぜでしょうか?

EDIT:また、他のクラスレベルのデータはありません。

+0

なぜブレークを使用しないのですか? – chance

答えて

7

あなたが&&を使用する必要があるときは、||を使用している:条件演算子で

for(int i = 0; i < vehicles.length && !found; i++) 

詳しい情報はthis Java Tutorials articleで見つけることができます。

フレンドリーな批評として、これは他の開発者にとってあまり読みにくいものではありません。以下は、従うことが容易になるだろう。その代わりfor(int i = 0; i < vehicles.length || !found; i++)使用の

for(int i = 0; i < vehicles.length; i++) 
{ 
    if(vehicles[i] == null) 
    { 
     Scanner reader = new Scanner(file); 
     Honda[i] = new Vehicle(); 
     Honda[i].readRecord(reader); 
     vehicles[i] = Honda[i]; 
     reader.close(); 
     break; //break out of the loop 
    } 
} 
+0

ありがとう、私はあなたがForループの中で休憩を使うことができるかどうか分からなかった – MJ93

1

for(int i = 0; i < vehicles.length && !found; i++)

とオペレータ&&でまたはオペレータ||を交換してください。基本的には、見つかったことは本当だったと思っていたが、私はまだ車両よりも少なかった。長さはループが続いた。 &&で実行するには両方とも真である必要があります。

関連する問題