Objekte in Array speichern

Status
Nicht offen für weitere Antworten.

mobile

Bekanntes Mitglied
Hi,

ich habe eine ethode erstellen() in meiner Klasse Person. Hier frage ich Daten zu der Person ab. Nun habe ich ja ein Objekt erstellt. Außerdem existiert eine statische Variable die im bei jedem neue erstellen Objekt um 1 steigt.

nun möchte ich meine verschiedenen Objekte (Personen) anhand dieser Nr. identifizieren können. Das heißt, ich möchte in der Nr. 1 die Person 1 speichern usw. Die Nr. (also Personen) sollen dann in einem Array abgespeichert werden. Auf dieses Array möchte ich dann aus einer anderen Klasse zugreifen können!

Danke für eure HIlfe!
 

Jango

Gesperrter Benutzer
Wenn du das mal etwas entwirrst, und dich zu einer konkreten Frage durchringen könntest, wäre das schon mal ein Anfang. :autsch:
 
U

unicode

Gast
Hi,

also du hast deine Personen-Objekte in einem Array, und möchtest immer das jeweilige Objekt aus dem Array mit einer bestimmten Personennummer bekommen?

1) schreibe ein getMethode() für die Personennummer

2)

Code:
public Person getPerson(int nummer)
Person ret=null;
for(int i;i<array.length;i++)
{
  if(array[i].getNummer()==nummer)
 {
     ret=array[i];
     //Suche ist beendet
     break;
 }

}
return ret;

Das ist nicht die beste Lösung, aber es sollte funktionieren.
 
U

un

Gast
Code:
public Person getPerson(int nummer)
{
Person ret=null;
 for(int i;i<array.length;i++)
 {
   if(array[i].getNummer()==nummer)
   {
     ret=array[i];
     //Suche ist beendet
     break;
   }

 }
return ret;
}

..sorry habe zwei klammern vergessen
 
G

Gast

Gast
Ok, ich versuchs mal.

Also ich habe folgendes, einmal die Klasse Person, muss leider alles schreiben, da irgendwie alles relevant ist. Kommentate fehlen noch.
:

Code:
import java.io.*;

public class Person {
	static int kontakt_nr = 0;
	final static int MAX_KON = 10;
	
	private byte nr = 0;
	private String v_name = "0";
	private String n_name = "";
	private String geb = "";
	private String str = "";
	private String hausnr = "";
	private String plz = "";
	private String wohnort = "";
	private String tel = "";
	private String mob = "";
	
	Person[] kon = new Person[MAX_KON];
	
	public void erstellen() throws IOException {		
		BufferedReader ein = new BufferedReader(new InputStreamReader(System.in));

                System.out.print("Kontaktnr.   : ");
                this.nr = Byte.parseByte(ein.readLine());
		
		System.out.print("Vorname     : ");
		this.v_name = ein.readLine();
		
		System.out.print("Nachname    : ");
		this.n_name = ein.readLine();
		
		System.out.print("Geburtstag  : ");
		this.geb = ein.readLine();
		
		System.out.print("Anschrift   : ");
		this.str = ein.readLine();
		
		System.out.print("Hausnummer  : ");
		this.hausnr = ein.readLine();
		
		System.out.print("Postleitzahl: ");
		this.plz = ein.readLine();
		
		System.out.print("Wohnort     : ");
		this.wohnort= ein.readLine();
		
		System.out.print("Telefonr.   : ");
		this.tel = ein.readLine();
		
		System.out.print("Mobilfunk   : ");
		this.mob = ein.readLine();
		
		kontakt_nr++;
	}	
	 
	public String toString() {
		return "Kontakt Nr: " + nr + "\n" + v_name + " " + n_name + "\n" + geb + "\n" + str + " " + hausnr + "\n" + plz + " " + wohnort + "\n" + tel + "\n" + mob + "\n";
	}
}

in der Methode erstellen() werden allen Variablen ihre Werte zugewiesen. Nun möchte ich aber alle eingegebenen Daten die ja zu einer Person gehören, unter der this.nr speichern. Also so, dass ich dann alle meine Objekte in dem Array kon speichern kann. Wenn ich jetzt zB 5 Objekte angelegt habe und ich auf das 3 Element aus dem Array kon zugreife, solle er mir alle Daten zu dieser Nr. angeben. Wie mache ich das?

Jetzt verständlicher?

Wenn ich jetzt
 

Marco13

Top Contributor
Hm Das ist ja wohl eine Übungsaufgabe?! Vielleicht solltest du ggf. die Aufgabenstellung mal genau posten. Prinzipiell könntest du zwar
Code:
  static Person[] kon = new Person[MAX_KON]; // statisch machen
   
   public void erstellen() throws IOException {       
       ...

       kon[kontakt_nr] = this;
       kontakt_nr++; 
    }
machen, aber das sieht (gelinde gesagt) ziemlich sch.... aus. Was auch immer es werden soll: Man kann es schöner und sinnvoller machen!
 

mikachu

Top Contributor
Code:
public class Person
{
    public static int PERSON_COUNTER = 0;
    private int _nummer;
    public Person()
    {
        _nummer = PERSON_COUNTER++; // erste Person kriegt Nummer 0
    }
    // ...
}
 
G

Guest

Gast
das ist ja alles gut und schön! Danke für eure Hilfe! Aber ich kann ehrlich gesagt wenig damit anfangen.

Hab irgendwie noch nen kleines Gedankliches Problem, denk ich. Mein Problem ist. Ich erzeuge ein Objekt der KLasse Person, also steigt der Personenzähler auf 0, damit ich es richtig in das Array speichern kann.

Code:
static int kontakt_nr = -1;
//....
public Person() {
    	kontakt_nr++; 
    }
So jetzt hab ich kontakt_nr auf 0. Dann rufe ich die Methode erstellen() (siehe oben) auf. Jetzt weise ich alle Daten zu. Wie kann ich denn jetzt aber alle Daten in das eine Objekt speichern. Da steig ich irgendwie noch nicht durch. Ich muss ja die Daten irgendwie unter dem Objektnamen zB 0 speichern und das Objekt dann in das Array speichern.

Da gibts noch ne andere Frage erstellt wird das Objekt ja immer aus einer anderen Klasse. Nämlich aus der hier.
Code:
//...
switch(wahl) {
	case 1 : //hier steht auch ncoh was
		break;
	case 2 : Person p = new Person();
		     p.erstellen();
		break;
//....
Also brauche ich ja hier auch die kontakt_nr (geht ja auch wegen static), aber ich muss doch hier dann schon sagen, dass ich jetzt das Objekt 0, 1,2,3 usw, anlegen will oder?


Versteht ihr mich?
 
S

SlaterB

Gast
> Wie kann ich denn jetzt aber alle Daten in das eine Objekt speichern.

die Daten sind doch bereits in einem Objekt drinne,
in dem Objekt, was du gerade erstellt hast,
in dem Objekt, an dem gerade erstellen() ausgeführt ist,
das ist ein Objekt, das nun Inhalt hat, was willst du mehr?

> und das Objekt dann in das Array speichern.

das könntest du tun, was ist da die Frage?
Beispiele gabs schon

> aber ich muss doch hier dann schon sagen, dass ich jetzt das Objekt 0, 1,2,3 usw, anlegen will oder?

wieso?
du erzeugst ein neues Objekt und dieses bekommt eine neue Nummer,
nämlich die vorherige Nummer +1, das funktionier so für 1, für 2 für 17.000, für jedes neu erstellte Objekt

die Nummer ist bisher natürlich nur in der statischen Variable flüchtig enthalten,
sofern das nächste Objekt erzeugt wird wird die Nummer erhöht,
du speicherst anscheinend nirgendwo die Nummer des Objektes im Objekt selber
(im Beispiel von mika.fhdw wird das getan)
 

mikachu

Top Contributor
Code:
import java.io.*;

public class Person {
	static int kontakt_nr = 0;
	final static int MAX_KON = 10;
	static Person[] kon = new Person[MAX_KON];
	
	private byte nr = 0;
	private String v_name = "0";
	private String n_name = "";
	private String geb = "";
	private String str = "";
	private String hausnr = "";
	private String plz = "";
	private String wohnort = "";
	private String tel = "";
	private String mob = "";
        private int nummer;

	public void erstellen() throws IOException {		
		BufferedReader ein = new BufferedReader(new InputStreamReader(System.in));

                System.out.print("Kontaktnr.   : ");
                this.nr = Byte.parseByte(ein.readLine());
		
		System.out.print("Vorname     : ");
		this.v_name = ein.readLine();
		
		System.out.print("Nachname    : ");
		this.n_name = ein.readLine();
		
		System.out.print("Geburtstag  : ");
		this.geb = ein.readLine();
		
		System.out.print("Anschrift   : ");
		this.str = ein.readLine();
		
		System.out.print("Hausnummer  : ");
		this.hausnr = ein.readLine();
		
		System.out.print("Postleitzahl: ");
		this.plz = ein.readLine();
		
		System.out.print("Wohnort     : ");
		this.wohnort= ein.readLine();
		
		System.out.print("Telefonr.   : ");
		this.tel = ein.readLine();
		
		System.out.print("Mobilfunk   : ");
		this.mob = ein.readLine();
		
		kon[nummer = kontakt_nr++] = this;
	}	
	 
	public String toString() {
		return "Kontakt Nr: " + nr + "\n" + v_name + " " + n_name + "\n" + geb + "\n" + str + " " + hausnr +
                          "\n" + plz + " " + wohnort + "\n" + tel + "\n" + mob + "\n";
	}
}

den Array auf static setzen, weil ist ja ne Klassenvariable... wie die anderen static-Variablen.
Dann noch den Konstruktor bauen, welcher die ganzen Attribute entgegennimmt, fertig...
der Rest geht aus dem Code herbei.
 
G

Guest

Gast
dank euch! Wird langsam klarer, sag ja da is irgendwo nen Denkfehler bei mir. Aber wenn ich dass jetzt so mache wie in dem letzten BSP von mika.fhdw, dann kann ich mir doch den Konstruktorsparen oder nicht? Da ich die Zuweisung ja in erstellen() mache. ??
 

mikachu

Top Contributor
jo, das hab ich noch schnell geändert ^^
ist mir auch eben eingefallen xD

ich hätte das aber ein wenig anders angefangen...
mit einem KontaktPool, welcher die Kontakte alle speichert und auch hinzufügt,
damit das nicht alles in der Kontakt-klasse gemacht werden muss :wink:
 
U

unicode

Gast
das ist ja alles gut und schön! Danke für eure Hilfe! Aber ich kann ehrlich gesagt wenig damit anfangen.
das liegt daran, dass dir grundlagen fehlen. die mußt du dir leider selbst beibringen = lesen

Code:
static int kontakt_nr = -1; 
//.... 
public Person() { 
       kontakt_nr++; 
  }

ist nicht schön.

Code:
static int kontakt_nr=0;

und inkremenentiere kontakt_nr erst nachdem du diese variable einer Person zugewiesen hast. mit -1 anzufangen ist nicht schön.

:wink:

es ist echt am besten, du schaltest den rechner aus, und denkst in ruhe nach wo du welche variable brauchst und wie du allgemein das programm aufbauen willst.
sorry ich will nicht flamen und ich meine das wirklich nicht böse. aber aus deinen postings geht es hervor, dass dir nicht java fähigkeiten fehlen sondern organisatorische fähigkeiten in bezug auf 'wie gehe ich systematisch vor beim erstellen eines java programms'.
also denk in ruhe nach und wenn du hilfe brauchst sind wir ja da...

Gruß
 
G

Guest

Gast
also das mit dem systematisch rangehen, dass stimmt wohl. Habe nur irgendwie die Angewohnheit, dass ich wenn ich einach mal anfange, besser lernen kann, und außerdem auch dann die Probleme erst sehe die mir vorher wohl meist nicht eingefallen wären.

Das man da vielleicht anders ran gehen sollte, sehe ich auch so aber hmm.... kommt noch! :)

Jetzt geht es aufjeden Fall so wie ich mir das gedacht habe. danke!
 
U

unicode

Gast
ich kenne übrigens viele erfahrene informatiker, die selbst bei einer kleinen aufgabe sich notizen machen mit papier und bleistift :)
ich bin am anfang wie du vorgegangen, hätte ich mir erstmal notizen gemacht, wäre alles viel schneller gegangen.

ich würde kontakt_nr auch als attribut von Person() machen und als private definieren. gewöhne dir statics nicht an, ich kann nur davor warnen aus eigener schlechter erfahrung.

Gruß
 
G

Guest

Gast
aber da wir grade dabei sind. Kann ich auch Testen ob ein Array Eintrag leer ist? Wenn ja wie! Danke!
 

mikachu

Top Contributor
unicode hat gesagt.:
ich würde kontakt_nr auch als attribut von Person() machen und als private definieren. gewöhne dir statics nicht an, ich kann nur davor warnen aus eigener schlechter erfahrung.

Was denn da für welche?
Ich nutze bevorzugt noch static-Variablen :D... weil die schneller ausgewertet werden :wink:
 

mikachu

Top Contributor
Anonymous hat gesagt.:
aber da wir grade dabei sind. Kann ich auch Testen ob ein Array Eintrag leer ist? Wenn ja wie! Danke!

ArrayElemente sind per default
, außer bei den primitiven Datentypen.

Zunächst einmal wird über einen numerischen Index auf alle Elemente zugegriffen, welcher in eckigen Klammern dem Namen des Array folgt. Allerdings wird das erste Element des Arrays stets mit null referenziert und erst das Folgelement mit eins. Dazu folgende Skizze.
SRC
 
U

unicode

Gast
Was denn da für welche?
Ich nutze bevorzugt noch static-Variablen icon_biggrin.gif... weil die schneller ausgewertet werden icon_wink.gif

du wirst noch früh genug mt static variablen auf probleme stoßen. also wenn du eine in einer klasse bist und nur eine instanz davon nutzt, sollte static keine probleme machen. aber wenn du zum beispiel mehrere instanzen einer klasse benötigst, und jede von denen eine eigene variable besitzen soll, die vorher als static definiert wurde, kommst du in teufelsküche. es ist verlockend am anfang static zu verwenden, aber lasse es.
benutze setter und getter und setze so viel wie möglich auf private.

L-Electron-X hat dazu einen guten Artikel geschrieben, warum man private benutzen sollte. kann ich nur empfehlen. leider finde ich den link dazu nicht..[/quote]
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Objekte in Array List speichern? Allgemeine Java-Themen 1
N einem Array Objekte hinzufügen die ihr Array position gespeichert haben Allgemeine Java-Themen 34
N Objekte aus Array Inhalt erzeugen Allgemeine Java-Themen 8
H Objekte Array, überschrieben? Allgemeine Java-Themen 5
schegga_B javax.crypto - Cipher Objekte - Sevice Provider matching? Allgemeine Java-Themen 1
berserkerdq2 Weiß jemand wie ich im Scenebuilder das Fenster so darstellen kann, dass beim Vollbildmodus die Objekte so angezeigt werden? Allgemeine Java-Themen 1
A Einzelne Objekte und Unterobjekte einer ArrayList ausgeben Allgemeine Java-Themen 53
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
E Objekte in einen String packen und wieder laden Allgemeine Java-Themen 5
L Objekte in Set nicht gefunden Allgemeine Java-Themen 13
Avalon Data Transfer Objekte aus Datenbank erstellen Allgemeine Java-Themen 8
G Objekte mit Strings Aufrufen Allgemeine Java-Themen 8
H Objekte speichern und laden Allgemeine Java-Themen 10
H Objekte speichern und laden Allgemeine Java-Themen 1
MiMa Referenz auf Objekte und deren Inhalte Allgemeine Java-Themen 12
W Objekte reproduzieren Allgemeine Java-Themen 2
W Objekte per Reflexion instanziieren Allgemeine Java-Themen 7
W Unittest - Objekte simulieren Allgemeine Java-Themen 7
T OOP Objekte mit Erweiterung Initialisieren Allgemeine Java-Themen 6
O Erste Schritte Objekte als Datenelemente Allgemeine Java-Themen 14
J Equals Mock Objekte Allgemeine Java-Themen 5
J Mockito - Objekte miteinander vergleichen (equals) Allgemeine Java-Themen 6
N Bei Mouse Events nicht mehrere Objekte erstellen Allgemeine Java-Themen 13
J Zugriff auf erstellte Objekte einer Klasse von einer Klasse ausserhalb Allgemeine Java-Themen 3
J Java Objekte = null, Garbagecollector Allgemeine Java-Themen 12
F Listen - Mehrere Objekte Allgemeine Java-Themen 1
J Verständnis Frage zur Instanz, Objekte, Instanzierung, Referenz Allgemeine Java-Themen 14
F Objekte erzeugen Allgemeine Java-Themen 1
E Threads ThreadPoolExecutor remove mit callable Objekte Allgemeine Java-Themen 3
P mehrer Verschiedene Objekte in einer Klasse erstellen. Allgemeine Java-Themen 4
E OOP Objekte und Methoden Allgemeine Java-Themen 1
@SupressWarnings() Umgebungsvariable Objekte "gekoppelt" Allgemeine Java-Themen 6
S Algorithmus um Objekte auf einer Flaeche mit gleichem Abstand anzuordnen..? Allgemeine Java-Themen 20
OnDemand Objekte speichern Allgemeine Java-Themen 8
B Objekte anhand von Properties file Allgemeine Java-Themen 41
U Tiefe Objekte schreiben Allgemeine Java-Themen 1
R Abstrakte Basisklasse und instanzierte Objekte der abgeleiteten Klasse als Basisklasse übergeben Allgemeine Java-Themen 2
E 3D Objekte in 2D Bild finden Allgemeine Java-Themen 5
J Daten aus GUI auslesen und in Objekte umwandeln Allgemeine Java-Themen 6
F FileOutput/Input Objekte Allgemeine Java-Themen 6
OnDemand Objekte serialisieren Allgemeine Java-Themen 3
J unterschiedliche Objekte, selbe getter und setter Allgemeine Java-Themen 15
L Lib gesucht: Java-Objekte mit JSON Allgemeine Java-Themen 2
U Set erklären dass objekte gleich sind Allgemeine Java-Themen 12
E Best Practice Verdammt große Objekte Allgemeine Java-Themen 10
B Mehrere Objekte verschlüsselt serialisieren Allgemeine Java-Themen 6
G Liste anzahl der gleichen Objekte Allgemeine Java-Themen 6
N Objekte an eine andere Applikation übergeben Allgemeine Java-Themen 3
N 2 Objekte zu einer Gruppe zusammenfügen Allgemeine Java-Themen 7
M Instanzierte Objekte in XML Dokument speichern Allgemeine Java-Themen 3
B Verschiedene Objekte in Abhängigkeit eines Typs instanziieren. Allgemeine Java-Themen 17
K Input/Output Im Programm instanzierte Objekte Speichern und laden Allgemeine Java-Themen 3
S OOP Objekte als Return-Werte: Einen Klon zurückgeben oder Instanz auf das Feld? Allgemeine Java-Themen 10
H Objekte Serialisiert speichern Allgemeine Java-Themen 10
L MouseListener für viele Objekte erstellen Allgemeine Java-Themen 16
5 Objekte Sortieren lassen Allgemeine Java-Themen 7
L Input/Output Textdatei in Objekte überführen? Allgemeine Java-Themen 4
R Input/Output Objekte speichern ohne überschreiben Allgemeine Java-Themen 7
A Collections HashMap.containsKey findet keine immutablen Objekte Allgemeine Java-Themen 3
H Threads Thread stirbt aber Objekte in ihm leben weiter?! Allgemeine Java-Themen 9
M Java Objekte in XML mit JAXB Allgemeine Java-Themen 9
C Strings und JSON Objekte so klein wie möglich im Speicher ablegen Allgemeine Java-Themen 5
H COM-Objekte/ AktiveX Objekte Allgemeine Java-Themen 4
C Script für Website mit Objekte Ausblenden Allgemeine Java-Themen 3
M Txt einlesen & Objekte erzeugen Allgemeine Java-Themen 2
X Objekte aus TableModel serialisieren und deserialisieren Allgemeine Java-Themen 4
T ObjectInputStream - Arrayliste, die unbekannte Objekte enthält Allgemeine Java-Themen 9
B class dateien "einlesen" und objekte erzeugen Allgemeine Java-Themen 6
D Grafische Objekte zeichnen Allgemeine Java-Themen 4
A Wie zur Laufzeit auf Objekte zugreifen Allgemeine Java-Themen 7
F Referenzen auf Objekte Allgemeine Java-Themen 5
H Eclipse und Objekte Allgemeine Java-Themen 6
S Objekte die Objekte enthalten: Keine Vererbung Allgemeine Java-Themen 4
E Objekte in einer Liste suchen. Allgemeine Java-Themen 4
I Über eine Liste iterieren und Objekte löschen. Wie löst man das sauber? Allgemeine Java-Themen 5
I Pattern zum Erweitern existierender Objekte Allgemeine Java-Themen 4
N Dynamische Objekte / DB Allgemeine Java-Themen 5
J Objekte binär speichern Allgemeine Java-Themen 10
TiME-SPLiNTER Unbekannte Anzahl serialisierter Objekte lesen Allgemeine Java-Themen 2
V Objekte in Kategorien einteilen. Allgemeine Java-Themen 6
M 3D Objekte mit einer Linie Verbinden Allgemeine Java-Themen 3
F Wie zur Laufzeit ganz neue Objekte erzeugen? Allgemeine Java-Themen 5
A Dummy-Objekte für Webgui erzeugen Allgemeine Java-Themen 12
W Objekte speichern mit JFileChooser Allgemeine Java-Themen 8
D befehl auf mehrere objekte anwenden Allgemeine Java-Themen 7
L Objekte in Liste packen Allgemeine Java-Themen 2
S XML in Objekte wandeln. Euer Rat? Allgemeine Java-Themen 12
G Objekte serialisieren Allgemeine Java-Themen 2
L Parameter-Objekte verändern oder nicht? Allgemeine Java-Themen 6
D Objekte nur unter bestimmten Voraussetzungen erzeugen Allgemeine Java-Themen 4
S Objekte mit Arrays Allgemeine Java-Themen 9
F Objekte oder besser ID in Listen speichern? Allgemeine Java-Themen 2
S erzeugte objekte zählen Allgemeine Java-Themen 3
U auf Objekte mit variablem Namen zugreifen Allgemeine Java-Themen 4
Airwolf89 dynamischer Zugriff auf Variablen/ Objekte Allgemeine Java-Themen 4
Landei Objekte ohne Konstruktoraufruf erzeugen Allgemeine Java-Themen 7
E tiefe Kopie nicht serialisierbarer Objekte Allgemeine Java-Themen 3
J Speicherbedarf und persistente Objekte Allgemeine Java-Themen 4
J ArrayList Objekte anhand Propertywerte filtern Allgemeine Java-Themen 3
R Moeglichst viele Datumsstrings in Date Objekte konvertieren? Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben