Ich will Auto-Objekt mit der Fahrzeug Klasse ( ich.e-Fahrzeug c = new Auto() ), und stecken Sie es in der Liste richtig
Erstellte ich ein Auto-Objekt mit der Fahrzeug Klasse ( ich.e-Fahrzeug c = new Auto() ), aber mein problem ist, wie werde ich stecken Sie es in die Liste fordert den Benutzer zur Eingabe der Daten für dieses Objekt nach dem einfügen in die Liste
import java.util.ArrayList;
import java.util.Scanner;
public class TestCar {
public static void main(String[] args) {
ArrayList<Car>list=new ArrayList<Car>();
Scanner in=new Scanner(System.in);
list.add(new Car());
list.add(new Car("Mitsubishi",1993,5,"Pajero"));
System.out.println("Enter Brand");
String Brand=in.nextLine();
System.out.println("Enter Year");
int Year=in.nextInt();
System.out.println("Enter Engine size");
double Enginesize=in.nextDouble();
System.out.println("Enter Model");
String Model=in.nextLine();
list.get(0).setBrand(Brand);
list.get(0).setYear(Year);
list.get(0).setEngineSize(Enginesize);
list.get(0).setModel(Model);
Veichle c = new Car(Brand, Year, Enginesize,Model); //Creating a new object
list.add(c); //This add will be wrong because cuz
//it will tell me to change type c to car
//so whats the correct add?
in.close();
}
}
- was ist der Konstruktor der
Car
Klasse? ist espublic Car(String brand, int year, double engineSize, String model)
oder auch Sie habenpublic Car()
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Sie erstellt haben, eine
ArrayList<Car>
- Sie können nur Elemente hinzufügen, die Liste, die der compiler weiß zu Autos. So könnte man verwenden:oder einfach nur erklären, sondern die Art der
c
zuCar
zu Beginn:Werte aus auf der Liste, Sie sind in Ordnung zu verwenden
Vehicle
, weil jederCar
ist einVehicle
:Alternativ könnten Sie ändern Ihre
list
variable:Beziehungsweise:
(Beachten Sie, dass es im Allgemeinen bevorzugt, um die Verwendung der Schnittstelle (
List
in diesem Fall) für die variable Typ, obwohl, müssen Sie einen konkreten Klasse (ArrayList
hier) zum erstellen einer Instanz.)Zu diesem Zeitpunkt, aber dein code ändert die Marke usw würde nicht funktionieren, wenn
setBrand
ist nur definiert, aufCar
, nicht Fahrzeug -, weillist.get(0)
würde erst dann wieder eineVehicle
. Sie könnten möglicherweise verwenden:... aber offensichtlich ist das Versagen (- at-execution-time), wenn Sie Ihre Liste eigentlich enthielt eine nicht-Auto Fahrzeug.
Grundsätzlich müssen Sie entscheiden, ob Ihre Liste sollte enthalten können alle Fahrzeug, oder nur Autos.
Als ein beiseite, ich würde dringend empfehlen, dass Sie beginnen folgende Java-Namenskonventionen - Nutzung
camelCase
für Ihre lokalen Variablen (year
,brand
etc.)Veichle c = new Car();
Dannlist.add((Car) c);
aber dann gibt es ein problem mitVehicle vehicle = list.get(0);
in denen er mir sagt, Veichle nicht in einen Typ aufgelöstVeichle
ist nichtVehicle
. Es sieht aus wie Ihre Klasse ist aktuell genanntVeichle
, aber Sie sollten es umbenennenVehicle
.Vehicle vehicle = list.get(0)
wenn ich drucken Sie es mitfor(int i=0; i<list.size();i++) System.out.println(list.get(i));
fordert den Benutzer zur Eingabe der Werte.. warum ist das so?Sollten Sie ihn erstellt haben, wie:
Zwei Punkt zu beachten:
Auch IMO der folgende code ist wirklich hässlich:
haben Sie, dies zu tun.
nachdem Sie dies getan haben, können Sie Sie hinzufügen, Fahrzeug-Typ, und Objekte aller sub-Klassen in die Liste
lässt vermuten:
oder Sie können einfach tun dies, vor dem hinzufügen in die Liste werfen Sie Ihre polymorphe Objekt mit dem Auto. wie diese.