2017-01-28 4 views
0

Ich bin neu in Java und immer noch Probleme mit Arrays. Jede Hilfe wird hier geschätzt. Mein Programm liest Daten aus einer CSV-Eingabedatei in der Hauptklasse und soll eine zweite Klasse verwenden, um jede Zeile (Array) in einer ArrayList zu speichern, in der die Hauptklasse irgendwann die Array-Liste auf den Bildschirm drucken wird. Ich bin wirklich verloren, wie ich das umsetzen kann.Hinzufügen zu einem Array zu einer ArrayList

Probeneingang

PERSON,ADD,BB222222,Anna 

Hauptklasse

try{ 
     File inputFile = new File(INPUT_FILENAME); 
     Scanner scanFile = new Scanner(inputFile); 
     String aLine; 
     String[]theLines; 

     while(scanFile.hasNextLine()){ 

      aLine = scanFile.nextLine(); 
      theLines = aLine.split(","); 
      if ("PERSON".equals(theLines[0]) && "ADD".equals(theLines[1])){ 
       processPersonAddition(theLines); 
      } 

Method jede Zeile in der Arraylist hinzuzufügen

public static void processPersonAddition(String[]theLines){ 
    Person personAdd = new Person(); 
    setPersonAttributes(personAdd, theLines); 
    personLogImpl.add(theLines); 
    } 

PersonLogImpl Klasse

import java.util.ArrayList; 

public class PersonLogImpl { 

    private boolean add; 
    private String licenseNumber, firstName 
    private ArrayList<Person> myList; 


    public ArrayList<Person> getPersonLog(){ 
     return myList; 
    } 

    public boolean add(Object obj){ //add person object to ordered list 
     ArrayList<String> list = new ArrayList<>(); 

     return add; 
    } 

Dies ist eine dritte Klasse, aber das funktioniert prima, verwendet nur als Getter und Setter

EDIT: dies ist die setPersonsAttributes Methode

private static void setPersonAttributes(Person person, String[]inputLineValues){ 
    person.setLicenseNumber(inputLineValues[2]); 
    person.setFirstName(inputLineValues[3]); 
} 

Antwort

1

Sie sind fast da!

würde ich folgende Änderungen vorschlagen:

Ändern Sie Ihre 'processPersonAddition' Methode folgende: \

public static void processPersonAddition(String[]theLines){ 
    Person personAdd = new Person(); 
    setPersonAttributes(personAdd, theLines); 
    personLogImpl.add(personAdd); 
    } 

Ändern Sie die Deklaration der 'myList' es zu initialisieren.

private List<Person> myList = new ArrayList<Person>();

Dann das Add-Methode in der zu folgenden PersonImpl Klasse ändern:

public void add(Person obj){ //add person object to ordered list 
     myList.add(obj); 
    } 

Später, wenn Sie alle Personen ausdrucken möchten, durchlaufen nur durch das Array 'myList'.

+0

Ich habe die Änderungen vorgenommen haben, jetzt habe ich einen Fehler zur Lauf von „Exception in thread‚main‘java.lang.NullPointerException bei myclass.PersonLogImpl.add (PersonLogImpl.Java:22) – Newb2Java

+1

ich gerade bearbeitet meine Antwort bekommen Sie haben Ihre Liste nicht initialisiert, deshalb erhalten Sie die Nullzeiger-Ausnahme. Initialisieren Sie die Liste wie in meiner bearbeiteten Antwort gezeigt und versuchen Sie es erneut. – VHS

Verwandte Themen