automatisch benannte arrays erstellen

b3rtNATION

Mitglied
Hallo Leute,
ich stehe hier vor einem kleinen Problem / hab vielleicht eine Denkblockade.

Mein Programm soll eine Datei einlesen. In der Datei sind verschiedene Menschen mit Attributen gelistet, z.B.:

## Ute
alter=23
gewicht=50
geschlecht=w

# Dirk
alter=40
gewicht=90
geschlecht=m

usw.
Diese Menschen sollen jetzt automatisch angelegt werden und auch abgerufen werden können - also wenn man Dirk abruft auch sein alter etc. erhält.

Bin ich da mit Arrays auf dem Holzweg ?
Könnte mir jemand einen Ansatz liefern, dass ich wieder weiter komme? :D

Danke

gruß
b3rt
 
Zuletzt bearbeitet:

InfectedBytes

Top Contributor
Erstmal solltest du eine Personen Klasse anlegen, in der du eben die Attribute wie Name, alter, etc. speicherst.

Wenn du weißt wieviele Leute in der Datei stehen, kannst du ein Array verwenden, ansonsten wäre eine Liste besser, da diese keine feste Größe hat.

Alternativ wäre vielleicht auch eine Map interessant, da diese einen Schlüssel (in deinem Fall den Namen) auf einen Wert abbildet (in deinem Fall die Personen Objekte)
 

b3rtNATION

Mitglied
super danke erstmal! Ich hab jetzt jetzt erstmal mit klassen versucht

Java:
File test = new File("\\personen.txt");
String name = "";
int gewicht = 0;
int alter = 0;
String geschlecht = 0;
FileReader personen = new FileReader(test);
BufferedReader bufferedReader = new BufferedReader(personen);
while (bufferedReader.ready()) {
  String zeile = bufferedReader.readLine();
  String[] attribut = zeile.split("=");
  if (zeile.isEmpty()) {
    continue;
  } else {
    if (zeile.contains("## ")) { //???-> hier müsste der name gesetzt werden.. hab aber keine ahnung wie, da ich oben ja zeile.split("="), der name aber bei ## vorleigt
  } else if ("gewicht".equals(attribut[0])) {
    gewicht = Integer.valueOf(attribut[1]);
  } else if ("alter".equals(attribut[0])) {
    alter = Integer.valueOf(attribut[1]);
  } else if ("geschelcht".equals(attribut[0])) {
    geschlecht = String.valueOf(attribut[1]);
  }
  Person mensch = new Person(name, gewicht, alter, geschlecht);
  name = "";
  gewicht = 0;
  alter = 0;
  geschlecht = "";
}


Wenn ich den namen weglasse, erstellt er nun auch die erste Person. Sobald er aber zur nächsten Person wechselt, wird die erste wieder überschrieben.

Hier bräuchte ich nochmal hilfe :p
danke

gruß
b3rt
 
Zuletzt bearbeitet von einem Moderator:

b3rtNATION

Mitglied
Jo mach ich das nächste mal, sorry.

Das mit dem Substring hab ich gemacht, funktioniert.
Weiterhin bleibt das Problem mit dem Überschreiben der Werte.
Irgendeine Idee wie das Programm die Leute nach dem erstellen so ablegt, dass ich auf jede zugreifen kann und dann auch deren Werte bekomme?
 

InfectedBytes

Top Contributor
du musst das Personen Objekt nachdem es erstellt wurde eben einem Array oder einer Liste hinzufügen.
Java:
ArrayList<Person> liste = new ArrayList<Person>();
while(...) {
//personen einlesen
Person person = new Person( ... );
liste.add(person);
}
 

b3rtNATION

Mitglied
Ok, das funktioniert jetzt anscheinend... er legt auf jeden Fall was in das Array.

bloß wie bekomme ich denn jetzt die gesamten werte ausgegeben? wenn ich eine Position abfrage kommt:

Java:
	System.out.println(liste.get(0));
	System.out.println(liste.get(1));

testen.Port@659e0bfd
testen.Port@2a139a55

Wenn ich
Java:
Person person = new Person( ... );
//hier greift er ja auch die Klasse Person zu und fügt eine neue Person hinzu
liste.add(person);
//wie kommt er denn hier an die Daten, die in Person liegen?

hier ein Auszug aus Person
Java:
public class Port {


	public String name;
	public int gewicht;
	public int alter
	public String geschlecht;


public Person(String name, int gewicht, int alter, String geschlecht {
		this.name = name;
		this.gewicht = gewicht;
		this.alter = alter;
		this.geschlecht = geschlecht;


	}
}
 

InfectedBytes

Top Contributor
Dir scheinen ein wenig die Grundlagen zu fehlen, daher würde ich dir dringend ein Java Buch nahelegen.
Ein gutes und kostenlosen Buch ist dieses hier: Rheinwerk Computing :: Java ist auch eine Insel - index

Wenn du alles nur mit System.out.println ausgeben willst, kannst du z.B. die toString methode von Person überschreiben.
Java:
public class Person {
  //...
  public String toString() {
    return name + ", " + alter + ... ;
  }
}
Ansonsten kannst du dir auch ein Personen Objekt aus der Liste holen und die Infos manuel abfragen:
Java:
Person p = liste.get(0);
System.out.println(p.name);


Ansonsten hab ich noch eine Anmerkung, du hast alle Variablen public gemacht. Im Allgemeinen ist es ratsamer diese private zu machen und für den öffentlichen zugang getter/setter zu nutzen:
Java:
public class Person {
  private String name;
  private int alter;
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public int getAlter() {
    return alter;
  }
  public void setAlter(int alter) {
    if(alter<0) throw new IllegalArgumentException(...);
   this.alter=alter;
  }
}
Die setter kannst du ggf. weg lassen. Außerdem kannst du im setter prüfen ob der übergebene Wert denn überhaupt sinnvol ist und ggf. eine Exception werfen, so wie in setAlter
 
Zuletzt bearbeitet:

b3rtNATION

Mitglied
Ja scheinbar :p
Aber es funktioniert jetzt auf jeden Fall!

Das mit sysout war nur um zu testen wie und wo er es ablegt. Mit dem aufrufen und der nachfolgenden Abfrage läuft es jetzt aber.

Vielen Dank !

Ich kann ja jetzt die einzelnen Positionen im Array aufrufen und dann die dazugehörigen Werte ausgeben lassen.
Kann ich aber auch explizit nach Personen suchen?
Wenn zb Dirk an der position (0) ist ich fragen "an welcher Position ist Dirk" ?!
 
Zuletzt bearbeitet:

Joose

Top Contributor
Ich kann ja jetzt die einzelnen Positionen im Array aufrufen und dann die dazugehörigen Werte ausgeben lassen.
Kann ich aber auch explizit nach Personen suchen?
Wenn zb Dirk an der position (0) ist ich fragen "an welcher Position ist Dirk" ?!

Stichwort: Schleife
Dann gehst du deine Liste Person für Person durch und vergleichst das Attribut "name" des aktuellen Objektes mit deinem gesuchten Namen. Stimmen die Namen (Strings) überein, hast du eine Person mit den Namen "XYZ" gefunden.

Dir fehlen wirklich noch Grundlagen, besorge dir für den Einstieg wirklich zuerst ein Buch (oder entsprechende Videos, PDFs aus dem Internet) und arbeite diese durch. (Hat dir InfectedBytes schon geraten!)
In vielen dieser Tutorials wird auf solche Probleme eingangen :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Linux .jar beim Start automatisch ausführen Allgemeine Java-Themen 6
F Sich automatisch aufrufende Java-Methoden Allgemeine Java-Themen 2
P Strukturänderungen/abnormalien in Logfiles automatisch erkennen Allgemeine Java-Themen 5
F Java automatisch ausführen Allgemeine Java-Themen 3
ms_cikar RS232 Serielle Baudrate automatisch einstellen Allgemeine Java-Themen 1
M String automatisch in nächste Zeile umbrechen (Graphics) Allgemeine Java-Themen 6
L Prozess automatisch beenden Allgemeine Java-Themen 8
T Automatisch Mails versenden Allgemeine Java-Themen 4
K NetBeans Ordner bei 'Clean&Build' automatisch in dist Verzeichnis kopieren Allgemeine Java-Themen 0
F paintComponent() nicht automatisch ausführen? Allgemeine Java-Themen 5
das-mo Dokument automatisch ausfüllen Allgemeine Java-Themen 8
L Links aus dem Inet-Browser automatisch anklicken lassen Allgemeine Java-Themen 5
A Jasperreports automatisch ausführen lassen Allgemeine Java-Themen 5
A Login-Daten Formular automatisch ausfüllen Allgemeine Java-Themen 10
S Programm das automatisch ungenutzten Source-Code entfernt..? Allgemeine Java-Themen 4
Iron Monkey JNLP nach Änderung automatisch aktualisieren Allgemeine Java-Themen 18
F Klassendiagramm / UML Diagramm automatisch erstellen Allgemeine Java-Themen 3
F WebBrowser Button automatisch drücken Allgemeine Java-Themen 5
K Eclipse automatisch Projekte cleanen und builden lassen Allgemeine Java-Themen 5
TiME-SPLiNTER Binary BufferedImage automatisch croppen Allgemeine Java-Themen 4
N Jlabel automatisch anpassen Allgemeine Java-Themen 3
M Java Klasse automatisch starten Allgemeine Java-Themen 3
V Java-Programm automatisch starten Allgemeine Java-Themen 2
B Abfrage ob JRE installiert ist, JAR automatisch starten Allgemeine Java-Themen 5
S Automatisch SerialUIDs einfuegen? Allgemeine Java-Themen 2
M KML Datei automatisch erzeugen Allgemeine Java-Themen 3
G Objekte automatisch casten Allgemeine Java-Themen 10
Escorter StringBuilder automatisch? Allgemeine Java-Themen 7
C Bilder automatisch bearbeiten/manipulieren Allgemeine Java-Themen 2
J Itext , Spaltenbreite automatisch anpassen ? Allgemeine Java-Themen 4
C JTree: Nodes automatisch öffnen Allgemeine Java-Themen 2
X Punktwolke im euklidischen Raum automatisch clustern. Allgemeine Java-Themen 2
M Gibt es ein Jar - das alle Componente Automatisch anpasst? Allgemeine Java-Themen 14
P Button automatisch drücken Allgemeine Java-Themen 5
G Dienst automatisch angehalten Allgemeine Java-Themen 2
D IE6 schließt automatisch nach Installieren des Java 1.6.0_02 Allgemeine Java-Themen 7
G JRE automatisch downloaden und installieren Allgemeine Java-Themen 4
L Java app läuft under win xp, automatisch auch unter vista32 Allgemeine Java-Themen 14
G UML automatisch erzeugen lassen Allgemeine Java-Themen 2
S Java greif automatisch auf Classpath zu Allgemeine Java-Themen 2
B Html Formulare mittels Java automatisch senden Allgemeine Java-Themen 5
B Schlüssel von Java automatisch generieren lassen. Allgemeine Java-Themen 4
L Per IText erstelltes PDF automatisch drucken Allgemeine Java-Themen 13
S Array "automatisch" füllen Allgemeine Java-Themen 5
G JTextArea im JScrollpane automatisch mitscrollen Allgemeine Java-Themen 4
M Eingelesene Bild wird automatisch skaliert Allgemeine Java-Themen 4
M Encoding automatisch erkennen Allgemeine Java-Themen 4
G Bedeutet Java automatisch OpenSource? Allgemeine Java-Themen 18
F JTextField Eingabe automatisch bestaetigen Allgemeine Java-Themen 17
G Tasten a-z automatisch drücken Allgemeine Java-Themen 2
M automatisch Code umformatieren? Allgemeine Java-Themen 12
A Endlosschleifen automatisch erkennen Allgemeine Java-Themen 6
G JTree automatisch sortieren lassen Allgemeine Java-Themen 5
T doppelgeklickte Datei automatisch nach Start des Prog öffnen Allgemeine Java-Themen 2
D [OT] Java schaltet automatisch auf Cleartype um Allgemeine Java-Themen 3
K Bilddatei automatisch mit programm öffnen Allgemeine Java-Themen 3
G Events und Automatisch generierte Unterklassen! Allgemeine Java-Themen 2
C Eclipse: set/get Methoden automatisch erstellen Allgemeine Java-Themen 4
G html Formulare automatisch ausfüllen Allgemeine Java-Themen 4
Ü Arrays vergleichen Allgemeine Java-Themen 59
Ü Methoden Arrays vergleichen - Methode Allgemeine Java-Themen 1
Ü Eurobeträge in möglichst wenig Scheine/Münzen zerlegen (2D-Arrays) Allgemeine Java-Themen 27
Buroto Arrays generator Allgemeine Java-Themen 10
B Arrays von Methoden möglich? Allgemeine Java-Themen 44
rosima26 Bester Sortieralgorithmus für kurze Arrays Allgemeine Java-Themen 40
B Lottospiel, genug Reihen tippen für 3 Richtige (Spaß mit Arrays)? Allgemeine Java-Themen 46
Muatasem Hammud Erstellung von Testdaten für Arrays Allgemeine Java-Themen 6
Junger_Basileus Attribute, Arrays, Schleifen Allgemeine Java-Themen 9
P Generics und Arrays Allgemeine Java-Themen 6
O Arrays an DOCX-Stamper Library übergeben Allgemeine Java-Themen 1
L ArrayList mit String Arrays in ein Array umwandeln Allgemeine Java-Themen 1
R Zeilen eines 2d Arrays abwechselnd links und rechts mit Nullen auffüllen Allgemeine Java-Themen 14
R Spalten/Zeilen verschieben in zweidimensionalen Arrays? Allgemeine Java-Themen 3
kodela Inhalt eines Arrays ändert sich mysteriös Allgemeine Java-Themen 2
W Spaß mit Arrays Allgemeine Java-Themen 1
W Reflexion und Arrays Allgemeine Java-Themen 7
S Problem mit Arrays Allgemeine Java-Themen 1
D Erste Schritte Arrays vergleichen und die zahlen die nur einmal vorkommen ausgeben Allgemeine Java-Themen 5
J int Werte in einer anderen Klasse in Arrays speichern Allgemeine Java-Themen 3
Neoline Interpreter-Fehler Probleme mit Arrays.toString Allgemeine Java-Themen 7
H Zweidimensionale Arrays Allgemeine Java-Themen 6
Neoline Methoden Zwei Arrays abwechselnd zusammenführen Allgemeine Java-Themen 15
J Methoden clone(), arraycopy(): ein- und zweidimensionale Arrays Allgemeine Java-Themen 8
D Übereinstimmungen in Arrays Allgemeine Java-Themen 5
B Arrays mit Text und Zahlen füllen Allgemeine Java-Themen 3
B Spalten eines 2d-Arrays Allgemeine Java-Themen 2
J Arrays auf gleichheit untersuchen funktioniert nicht Allgemeine Java-Themen 11
N 2 Arrays abwechselnd verbinden Allgemeine Java-Themen 13
J private and arrays Allgemeine Java-Themen 2
T Alle Kombinationen aus zwei Arrays Allgemeine Java-Themen 8
RalleYTN Datentypen Herausfinden ob Object ein Array ist ohne den Typen des Arrays zu kennen? Allgemeine Java-Themen 12
R Rückgabe eines Arrays durch Funktion Allgemeine Java-Themen 9
H Datentypen Typ eines Arrays überprüfen Allgemeine Java-Themen 9
C Zweidimensionale Arrays - Quadratisch? Allgemeine Java-Themen 4
AssELAss Zwei Arrays / ArrayLists inhaltlich vergleichen Allgemeine Java-Themen 2
A Lineare Interpolation mit zwei Arrays Allgemeine Java-Themen 4
S Datentypen Warum ist bei Arrays die Länge als Property aufrufbar? Allgemeine Java-Themen 1
Dechasa Vergleichen von zwei Arrays Allgemeine Java-Themen 4
DanielsLPecke Java Arrays an andere Java Programme schicken und zurück Allgemeine Java-Themen 5
H Arrays Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben