2017-03-10 1 views
0

Um Sie wissen zu lassen, dass dies eine Aufgabe für meine Klasse ist, frage ich nur um ein wenig Hilfe damit. Die Kurzform der Zuweisung lautet:Brauchen Sie Hilfe, versuchen, eine Datei zu lesen und füllen Sie ein Array von Objekten mit ihren Parametern in Java

Schreiben Sie eine Anwendungsklasse, die eine Datei liest (aus der Befehlszeile) und füllt ein Array vom Typ Fahrzeug [] mit neuem Fahrzeug (params), neues Auto (params), neues amerikanisches Auto (params) neues ausländisches Auto (params), neuer LKW (params), neues Fahrrad (params), usw.

Dieses ist, was ich bis jetzt habe (ich habe bereits einzelne Klassen für jedes geschrieben Objekte, die alle das Fahrzeug verlängern):

public class n01029506{ 
    public static void main(String[] args) throws FileNotFoundException{ 
    Scanner input = new Scanner(new File(args[0])); 
    ArrayList<Vehicle> list = new ArrayList<>(); 

    while(input.hasNext()){ 
    if(input.nextLine().equals("vehicle")){ 
     String name = input.nextLine(); 
     String address = input.nextLine(); 
     String phone = input.nextLine(); 
     String email = input.nextLine();  
     list.add(new Vehicle(name, address, phone, email)); 
    } 
    } 
    System.out.println(list.get(0)); 
    } 
    } 

Die Ausgabe dieses Codes ist ein Array von Objekten namens Fahrzeug aus t Die Datei, die ich lese. Das Problem, das ich habe, ist, wenn ich eine andere else if-Anweisung es kompiliert, aber ich bekomme einen Laufzeitfehler.

 if(input.nextLine().equals("vehicle")){ 
     String name = input.nextLine(); 
     String address = input.nextLine(); 
     String phone = input.nextLine(); 
     String email = input.nextLine();  
     list.add(new Vehicle(name, address, phone, email)); 
    }else if(input.nextLine().equals("car")){ 
     String name = input.nextLine(); 
     String address = input.nextLine(); 
     String phone = input.nextLine(); 
     String email = input.nextLine();  
     boolean convert = input.nextBoolean(); 
     String color = input.nextLine(); 
     list.add(new Car(name, address, phone, email, convert, color)); 
    } 

Was ich das Programm brauche, ist zu tun durchlaufen und sobald es eine Zeile aus der Datei liest - ob ein Auto, Fahrzeug, etc. - es schafft und Objekt und speichert es in der Anordnung. Ich bin mir nicht sicher, wie das Programm richtig funktioniert. Wenn mir jemand in die richtige Richtung helfen könnte, würde ich das sehr schätzen.

+2

Anruf nextline() ** einmal **, speichern Sie das Ergebnis in einer Variablen und vergleichen Sie diese Variable mit "Fahrzeug", "Auto" usw. nextLine() liest die nächste Zeile ** und bewegt sich ** zum Anfang des nächsten. Sie sollten das wirklich selbst herausfinden können, indem Sie Ihren Debugger verwenden oder einfach System.out.println() - Traces in den Code einfügen. –

+1

Können Sie ein Beispiel der Eingabedatei posten? Wie wir jetzt schreiben, müssen wir annehmen, dass jeder Parameter in einer eigenen Zeile geschrieben ist. Wenn das nicht der Fall ist, würde das Ihr Programm schnell brechen. – NAMS

+0

@JBNizet Danke, ich verstehe jetzt. Ich bin völlig durchgeknallt davon geworden, wie sonst die ifs funktioniert und die nächsten Aussagen. –

Antwort

0

Ich werde versuchen zu sagen, was JB Nizet in dem Kommentar gesagt hat. Angenommen, Ihre Eingabedatei enthält:

car 
Riley Clark 
3476 9th Ave N 
555-555-1234 
[email protected] 
false 
blue 

OK? Jetzt liest Ihr Programm die Zeile car und vergleicht sie mit vehicle. Da sie nicht gleich sind, geht es in den else if Teil. Dies wird die Zeile Riley Clark lesen und mit car vergleichen. Sie sind auch nicht die gleichen. Ihr Programm wird also niemals entdecken, dass sich in diesen Zeilen der Datei ein Auto befindet.

JB Nizet gab auch die Lösung: „Call nextLine()einmal, speichert das Ergebnis in einer Variablen, und vergleichen Sie diese Variable mit "Fahrzeug", "Auto" usw.“

Verwandte Themen