Frage von Freddy789, 56

Java Strings in ein Array?

Ich habe einen Code geschrieben und möchte das dieser 3mal Eingaben braucht und erst dann ausführt. Hier ist der Code import java.util.Scanner;

public class Personenverwaltung {

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    for (int i = 0; i < 3; i++){
    System.out.println("Bitte ihren Vornamen eingeben");
    String name;
    name = scanner.nextLine();
    System.out.println("Bitte ihren Nachnamen eingeben");
    String nachname;
    nachname = scanner.nextLine();
    System.out.println("Bitte Alter eingeben");
    String alter;
    alter = scanner.nextLine();
    System.out.println("Bitte Wohnort eingeben");
    String wohnort;
    wohnort = scanner.nextLine();
    String[] datenArray = new String[] { name, nachname, alter, wohnort};
    Person test = new Person();
    test.setName(name);
    test.setNachname(nachname);
    test.setAlter(Integer.parseInt(alter));
    test.setWohnort(wohnort);

    System.out.println("Name: " + test.getName());
    System.out.println("Nachname: " + test.getNachname());
    System.out.println("Alter: " + test.getAlter());
    System.out.println("Wohnort: " + test.getWohnort());
    }
    scanner.close();
}

}

und die personen klasse

public class Person {

private String name;
private int alter;
private String wohnort;
private String nachname;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public int getAlter() {
    return alter;
}

public void setAlter(int alter) {
    this.alter = alter;
}

public String getWohnort() {
    return wohnort;
}

public void setWohnort(String wohnort) {
    this.wohnort = wohnort;
}

public String getNachname() {
    return nachname;
}

public void setNachname(String nachname) {
    this.nachname = nachname;
}

}

Antwort
von Maimaier, 28

Derzeit gibts du Person 1 ein und wieder aus, Person 2 ein und wieder aus, Person 3 ein und wieder aus. Du möchtest aber die Ausgabe der 3 Personen erst nach dem alle 3 Personen eingegeben wurden?

Person[] person = new Person[3];

for ( ... // eingabe

person[i] = new Person();

person[i].setName(name); ...

for ( ... // ausgabe

System.out.println("Name: "+person[i].getName());

Antwort
von MalNachgedacht, 16

Zunächst einmal ist diese Zeile nutzlos:

 String[] datenArray = new String[] { name, nachname, alter, wohnort};

da Du diese Variable datenArray nie wieder liest.

Ich nehme mal an dass Du die Daten von 3 Personen lesen möchtest und nachdem die drei Personen gelesen wurden anschließend die Daten dieser drei Personen ausgeben willst?.

Dazu brauchst Du zwei Schleifen.

In der ersten Schleife liest Du die Daten der Personen, erstellst daraus ein Objekt  wie Du es ja bereits programmiert hast

 Person test = new Person();
test.setName(name);
test.setNachname(nachname);
test.setAlter(Integer.parseInt(alter));
test.setWohnort(wohnort);

und Du mußt dann dieses Objekt irgendwo speichern, damit Du es hinterher in der zweiten Schleife wieder ausgegeben kannst.

Dazu kann man schon ein Array verwendet - aber das Array enthält ja keine Strings sondern Objekte der Klasse Person.

Also VOR der ersten Schleife ein entsprechenden Array definieren

Person[] personen=new Person[3];

und dann innerhalb der ersten Schleife das gerade erstellte Objekt test an passender Stelle im Array ablegen

personen[i]=test;

In der zweiten Schleife (die auch wieder von 0-2 läuft) kannst Du dann z.B. mit

Person test=personen[i]

die Person die gerade "dran" ist aus der entsprechende Stelle im Array auslesen und dann hinterher ihre Daten ausgegeben.

Antwort
von Poldi95, 33

Ja die drei Scanner abfragen nur in der For-Schleife sollte doch gehen.
Allerdings musst du name, Nachname usw schon vor der For-Schleife initialisieren da sie sonst nur in der For-Schleife verfügbar sind

Kommentar von Freddy789 ,

entweder ich stell mich dumm an oder es  geht nicht ^^

Keine passende Antwort gefunden?

Fragen Sie die Community