2016-10-09 19 views
-6
public CarDealerShip() { 
    cars = new Car[80]; 
    listSize=0; 
} 
public void addNewCar (String model, int year, int price, String color) { 
    m = model; 
    y = year; 
    p = price; 
    c = color; 
    cars [listSize] = new NewCar (m,y,p,c); 
    listSize++; 
} 
public void addUsedCar (String model, int year, int price, boolean rusty) { 
    m = model; 
    y = year; 
    p = price; 
    r = rusty; 
    cars [listSize] = new UsedCar(m,y,p,r); 
    listSize++; 
} 
public String printReport() { 
    String list=""; 
    if (cars.length==listSize) 
     for (int i =0; i <= listSize; i++) 
      list+=cars[i].toString()+"\n"; 
    return list; 
} 

printReportの方法では、forループは変数リストを更新することを想定していますが、まったく何もしません。私はもう一度Javaを使用しているので、しばらくお待ちしております。java forループで変数が更新されない

+1

StackOverflow! downvoteは、説明を伴ってより建設的に作られています。 –

+0

(cars.length == listSize -1)は問題を解決する可能性があります。 –

+0

@aa_oo 'cars = new Car [80]'と宣言された場合、 'cars.length'は常に' 80'と等しくないでしょうか? –

答えて

0

0 <= 0以降、listSize==0cars[0]が定義されていなくても)ループが1回繰り返されます。

printReport "何も実行しません"(例外を投げることを含む)場合は、ifの式がfalseと評価される可能性が最も高いです。

これは、printReportを呼び出すときにcarsに80台の車を追加しなかった場合に発生する可能性があります。

1

CarDealerShipクラスのオブジェクトを作成すると、変数「listSize」は値0を取得し、「cars」配列は80要素長になります。 したがって、基本的にこのIFは失敗します。 if(cars.length == listSize)。 したがって、forループは決して入力されません。 これはあなたが提供したコードから言えることです。

0

削除この行:

if (cars.length==listSize) 

車は長さ80と可変LISTSIZEこのクラスの作成時に0の値を取得する配列であるため。したがってforループは実行されません。

関連する問題