2016-10-09 24 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; 
} 

In der Methode printReport soll die for-Schleife die Variablenliste aktualisieren, tut aber überhaupt nichts. Es ist schon eine Weile her, dass ich Java wieder benutze, daher wird jede Hilfe geschätzt.java for loop aktualisiert die Variable nicht

+1

Leute von StackOverflow! Ein Downvote wird konstruktiver, wenn er von einer Erklärung begleitet wird. –

+0

(cars.length == listSize -1) könnte Ihr Problem lösen. –

+0

@aa_oo Wird 'cars.length' immer nicht gleich' 80', wenn 'cars = new Car [80] 'deklariert? –

Antwort

0

Seit 0 <= 0 wiederholt sich die Schleife for einmal, selbst wenn listSize==0 (auch wenn cars[0] nicht definiert ist).

Also, wenn printReport "überhaupt nichts tut" (einschließlich das Auslösen einer Ausnahme), ist die wahrscheinlichste Ursache, dass der Ausdruck in der if-Anweisung false auswertet.

Dies kann passieren, wenn Sie cars nicht 80 Autos hinzugefügt haben, wenn Sie versuchen, printReport anzurufen.

1

Wenn Sie ein Objekt der Klasse CarDealerShip erstellen, erhält die Variable listSize den Wert 0, während das Array 'cars' 80 Elemente lang ist. Also im Grunde schlägt diese IF: if (cars.length == listSize). Daher wird die for-Schleife nie eingegeben. Das ist alles, was aus dem von Ihnen bereitgestellten Code hervorgeht.

0

Entfernen dieser Zeile:

if (cars.length==listSize) 

weil Autos eine Arraylänge ist, deren 80 und die variable Listsize erhält einen Wert von 0 zu der Zeit, diese Klasse zu schaffen. Also for Schleife wird nicht ausgeführt.