webForumDet fria alternativet

Strukturproblem

2 svar · 271 visningar · startad av pettsson

pettssonMedlem sedan jan. 2002777 inlägg
#1

Jag har svårt att få till en bra struktur i mitt program, vilket ska hålla reda på personinformation (programmet har dykt upp här ett par gånger redan, men jag blev inte nöjd med koden i det gamla programmet :r ). Min klass Person har fälten String Fornamn, String Efternamn samt Date Personnummer. Man ska kunna skriva in information om en person som sedan lagras i en ArrayList som heter Register.

Mitt problem är nu själva lagrandet och hämtandet. Jag skapar en Person med denna kod

  public void Create() throws IOException, ParseException {
    String newFn;
    String newEn;
    Date newPn;
    DateFormat df = DateFormat.getDateInstance(3); //Får inte SHORT att fungera...

    System.out.print("Förnamn? ");
    newFn = in.readLine();
    System.out.print("Efternamn? ");
    newEn = in.readLine();
    System.out.print("Personnummer? (dd-mm-yyyy) ");
    newPn = df.parse(in.readLine());

    Person MyPerson = new Person(newFn, newEn, newPn);
    Register.add(MyPerson);

    return;
  }

Men när jag sedan gör Register.get(i) för att hämta en person får jag bara massa knasigheter tillbaka. Jag antar att det beror på att jag lagrar tre fält, dessutom av olika typ. Hur bör jag göra? Förut hade jag tre olika listor, en för varje fält, men det var ju inte särskilt snyggt :OO

antilizaerMedlem sedan apr. 200358 inlägg
#2

Vad gör du med Person objekt efter att du har hämtat det från listan? Misstänker att du försöker skriva ut objektet direkt, typ:

    for(int i=0; i < Register.size(); i++) {
        System.out.println(Register.get(i));
    }

Detta kommer ge skriva ut konstigheter, det du behöver göra är antingen att implementera toString() i Person objeket som returnerar en sträng hur objekts innehåll ska skrivas ut. Förslag på toString:

     public String toString() {
         return Personnummer + " - " + Fornamn + " " + Efternamn;
     }

Eller så kan du ska get och set metoder på Person objekt för att komma åt medlemsvariablerna förnamn, efternamn... Som du sen använder När du vill skriva ut något i for loopen:

    ....
    Person pers = (Person) Register.get(i);
    System.out.println("Fornamn: " + pers.getFornamn());
    System.out.println("Efternamn: " + pers.getEfternamn());
    ...

Hoppas att det var detta du vill åstakomma...

pettssonMedlem sedan jan. 2002777 inlägg
#3

Tack :)
Detta var precis vad jag behövde

Genererad på 517 ms · cache AV · v20260730165559-full.f96bc7eb