# Objekt ausgeben



## Gast (16. Okt 2006)

Ich versuch mich grad auf mein abi vorzubereiten welchen  nächstes jahr ansteht. Leider  hab cih ne weile gepennt und hab einige aufzuholen. Also ne wahrscheinlich ziemlich simple frage. hab en kleines prog. was namen, telenummer und geb. datum, in ein objekt speichert. wie geb ich nun das  objekt aus? und gleich nochwas, wenn ich nun viele leute mit name usw. speichern will was nehm ich da am besten:  arraylist ? ...ohje ich seh schon ich hab viel aufzuholen wenn ich mein abi schaffen will. danke fürs lesen und antworten. gruß alois


----------



## SlaterB (16. Okt 2006)

zunächst mal musst du wissen, was denn in der Ausgabe stehen soll,
z.B. kann man einen String zusammenbauen
getName()+" "+getNumber();
und diesen dann mit System.out.println() ausgeben,

bei so einer Objektbeschreibung bietet es sich an,
getName()+" "+getNumber(); 
in der toString()-Operation des Objektes unterzubringen 

-----------

ArrayList ist toll, ja
alternativ auch Array oder andere Listen,

bei solchen Fragen kannst du mit einer Komplettdurcharbeitung der Grundlagen von Java in einem Buch nix falsch machen,


----------



## Gast (16. Okt 2006)

schönen dank. ich arbeite mich mal weiter bis zur nächsten frage


----------



## Gast (16. Okt 2006)

wie geb ich denn ne arraylist aus ? also ich habs jetzt mit add, dass die objekte reingeschrieben werden, bzw. werden sollten. aber wie geb ich das alles aus. gruß


----------



## Anmeldeboykottierer (16. Okt 2006)

Hi,
du solltest hier nicht nur nach einer Lösung fragen, die würde dir wenig helfen (du sagst ja selbst, du möchtest etwas nachholen). Wichtig ist also die Herangehensweise (die ist für jedes Problem gleich). 

Der erste und wichtigste Schritt ist immer, dass du dein Gesamtproblem zerlegst. Ihr habt vielleicht irgendwann mal über Divide and Conquer (Teile und Herrsche) gesprochen, ist immer gut! Wenn du ein großes Problem hast, dann gibt es viele Fragen und man verliert schnell den Überblick, Fehler schleichen sich ein, ...

Was du hier wissen willst ist erstmal ein größeres Problem, dass kannst du dir abstrakt überlegen. Du hast eine Liste (egal was für eine Liste oder wie die in Java aussieht!). Du hast eine Liste, da stehen Einträge drin, wie gibt man die aus?
Überleg dir hier einfach mal, wie du das machen würdest. Ich geb dir eine Liste (z.B. eine Datei) und du sollst die für mich auf ein Blatt Papier übertragen, wie machst du das? Bin da natürlich ein böser Arbeitgeber, Drucken darfst du nicht, du musst schreiben! 

Ich würde doch mal sagen, dass du einfach die Liste durchgehst und jeden Eintrag aufschreibst. Erst die Nummer 1, dann die Nummer 2, ...

Das ganze sollte Java dann auch mit der Arraylist (oder jeder anderen Liste) machen. Du hast eine Menge von Einträgen und die gibst du aus, in dem du jeden einzelnen Eintrag ausgibst. Das heißt, du brauchst eine Schleife, die jeden Eintrag nimmt und eine Methode, die den aktuellen Eintrag ausgibt (2 kleinere Probleme). 
Die Schleife ist dabei trivial, bleibt das Problem wie du nun einen Eintrag ausgibst.
Gut, auch dass kannst du jetzt weiter zerlegen, z.B. in die Ausgabe des Namen und des Vornamen,...

Irgendwann erreichst du Probleme, die du sehr einfach lösen kannst (ohne das Zerlegen noch Sinn macht), wie z.B. die Schleife und bist damit fertig.

Alles ganz einfach!

Gruß Der Anmeldeboykottierer


----------



## Gast (16. Okt 2006)

alles klar. schon am probiern herr lehrer


----------



## Gast (16. Okt 2006)

also bei nem array heißts ja name[0] um an die nullte stelle des arrays zu kommen. wie mach ich das denn bei ner arrylist? versuch jetzt mit ner schleife die erste, zweite...stelle der arrayliste rauszuholen und dann das an ne methode übergeben um dort name etc. rauszuholen. fehlen tun mir jetzt die befehle zum rausholen des objekts aus der arraylist und die genaue übergabe. also was kommt in die schnittstelle von der methode wenn sie ein objekt geschickt bekommt. gruß


----------



## SlaterB (16. Okt 2006)

ohne API geht gar nix, da steht alles zu ArrayList
http://java.sun.com/j2se/1.5/docs/api/

und wie man in einer beliebigen Klasse ein beliebiges Objekt als Parameter übergibt willst du nicht wirklich fragen oder?
schaue dir jedes Programm der Welt an,
nahezu überall dürfte das vorkommen


----------



## Gast (16. Okt 2006)

joa. hab schon bei den javadocs geschaut. find aber irgentwie noch nix. naja nochmal genau schauen. 

zu nummer 2. vergessts.  bin grad etwas verwirrt  is natürlich klar


----------



## Gast (16. Okt 2006)

bekomms irgentwie net gebacken das objekt aus der liste rauszuholen:/ find auch in den java docs keine methode dazu... gruß


----------



## SlaterB (16. Okt 2006)

get(int index)

die benutzen aber auch immer die unmöglichsten Namen


----------



## wieder ich (16. Okt 2006)

so. ich hab irgent en logischen fehler drin den ich nicht seh. :/ danke fü den ders überblickt 
läuft soweit das prog. allerdings bei der ausgabe der leuten wird immer nur der letzt eingegebene 3 mal ausgegeben. 
habs jetzt erstmal so einfach wie möglich was schleife etc. angeht. also noch nix mit size etc. aber mus sja erst ma so laufen. danke


```
import java.util.ArrayList;
public class Haupt
{
    private static ArrayList liste = new ArrayList(10); 
    private static Eintrag leut;
    private static int index =0;
    public static void menue()
    {
        System.out.println("--------------Telefon- und Geburtstagliste--------------");
        System.out.println("(1)Neuer Eintrag");
        System.out.println("(2)Eintrag löschen");
        System.out.println("(3)Eintrag ändern");
        System.out.println("(4)Liste ausgeben");
        System.out.println("(5)Ende");
        int boom=StdInE.intInput();
        
        switch(boom)
        {
            case 1: eingabe_Daten();         break;
            case 2:                          break;
            case 3:                          break;
            case 4:  ausgabe_Daten(leut);    break;
            case 5: System.exit(0);          break;

        }//switch
        menue();
    }
    
    public static void eingabe_Daten()
    {
         System.out.println("Namen:");
         String name = StdInE.stringInput();
         System.out.println("Nummer:");
         int nummer = StdInE.intInput();
         System.out.println("Geb.Datum tag/monat/jahr");
         String datum = StdInE.stringInput();
         leut = new Eintrag(name, nummer, datum);
         liste.add(index, leut);
         index++;
     }
    
    public static void ausgabe_Daten(Eintrag leut)
    {   
        
        for(int i = 0; i<=2; i++)
        {
        liste.get(i);
        System.out.println("Name: "+ leut.getName() );
        System.out.println("Nummer: "+ leut.getNummer());
        System.out.println("Geburtstag: "+ leut.getGeb());
        }
    }
   
    public static void main(String[]args)
    {
        menue();
    }
   
}
```


und class nummer 2 



```
public class Eintrag
{
    private String name;
    private int nummer;
    private String geb;
    
    public Eintrag(String name, int nummer, String geb)
    {
        this.name = name;
        this.nummer = nummer ;
        this. geb = geb;
        }
    
    public String getName(){ return name;}
    public int getNummer(){ return nummer;}
    public String getGeb(){ return geb;}
       
}
```


----------



## SlaterB (16. Okt 2006)

```
public static void ausgabe_Daten(Eintrag leut) 
    {    
        
        for(int i = 0; i<=2; i++) 
        { 
        liste.get(i); 
        System.out.println("Name: "+ leut.getName() ); 
        System.out.println("Nummer: "+ leut.getNummer()); 
        System.out.println("Geburtstag: "+ leut.getGeb()); 
        } 
    }
```
hier werden 3x die Daten von leut ausgegen,
der Aufruf von 
liste.get(i); 
hat keinen Einfluß,

vielleicht willst du stattdessen
leut = (Eintrag)  liste.get(i); 

dann kann man sich aber die Frage stellen, warum es überhaupt einen Parameter leut gibt


----------



## Gast (16. Okt 2006)

also so gehts danke.  kann mir jemand die zeile

leut = (Eintrag) liste.get(i);

mal genau erklärn. mit dem (Eintrag) hab ich noch en versteh problem. danke


----------



## SlaterB (16. Okt 2006)

liste.get(i);
liefert das i-te Objekt,
da du eine ganz allgemeine Java-Hilfsklasse benutzt, kennt die Eintrag nicht und gibt ganz generell den Typ Object zurück,

damit du den Eintrag in der Object-Form in einer Eintrag-Variable speichern kannst, 
musst du explizit angeben, dass es sich um einen Eintrag heißt,
also auf Eintrag casten,

------
'casten' wird dir jetzt vielleicht auch nix sagen, 
ideales Stichwort, um 3-4 Stunden lang eine der wichtigsten Grundlagen von Java in einem Buch nachzulesen,
-------

du speicherst schließlich das Eintrag-Objekt in der Variablen leut,
um darauf in den nächsten drei Zeilen zuzugreifen


----------



## Gast (16. Okt 2006)

danke. 
also casten sagt mir nichst aber (datentyp) kenn ich soweit zum umwandlen.
int zahl = 6;

 byte zahl2 = (byte) zahl

sowas in der art. is das das ?


----------



## SlaterB (16. Okt 2006)

jo


----------

