# ArrayList Länge ermitteln und ausgeben



## Fluppie (8. Jan 2007)

Hi, 

ich habe ein Programm das Werte in ein ArrayList speichert. Nun würde ich gerne zur Ausgabe eine for-Schleife benutzen . Dafür müsste ich die länge des ArrayList wissen kann mir einer sagen wie ich sie ermitteln kann??


----------



## Gast (8. Jan 2007)

for( Werte s : myList){
    s......
}

myList.size();

siehe API


----------



## Bert Brenner (8. Jan 2007)

http://java.sun.com/javase/6/docs/api/java/util/ArrayList.html#size()


----------



## Fluppie (8. Jan 2007)

```
public void ausgabe()
{
for (int i=0; i<= names.length; i++)
System.out.println( names + "\t" + dates);
}
```

Das ist mein Code. Mir ist jetzt immernoch nicht klar was ich an die Stelle von names.length schreiben muss (names ist mein ArrayList) HELP[/quote]


----------



## Fluppie (8. Jan 2007)

Mein Problem ist, dass ohne die for-Schleife meine Ausgabe so aussieht: 

[Name, Name, Name] [Datum, Datum, Datum]

Ich hätte aber gerne dass der das so macht: 

[Name] [Datum]
[Name] [Datum]


----------



## muhkuh199999 (8. Jan 2007)

```
public void ausgabe()
{
for (int i=0; i<= names.size()-1; i++)
System.out.println( names + "\t" + dates);
}
```

so solltest du die länge bekommen und keine exectpion....


----------



## Fluppie (8. Jan 2007)

Danke für die Hilfe, das hat auch funktioniert. Nur leider gibt der mir das immer noch so aus : 

[Name, Name, Name] [Datum, Datum, Datum] 

Nicht so wie ich das eigentlich haben will: 

[Name] [Datum]
[Name] [Datum]


----------



## muhkuh199999 (8. Jan 2007)

arbeitest du nur mit einer arraylist und in der sind name und datum gespeichert?????

also befindet sich zum beispiel auf arraylist.get(0) muh und 1966 ??
oder wie haste das gemacht???
poste mal mehr code bitte


----------



## Fluppie (8. Jan 2007)

Nee, ich hab 2 ArrayLists in der einen sind die Namen gespeichert (names) und in der anderen das Datum (dates)


```
public class Geburtstag
{
    // Definieren Sie ab hier die Klassenvariablen für Geburtstag
    private ArrayList<String> names;
    private ArrayList<String> dates;
    String name,date;
 
  
    // Definieren Sie ab hier die Objektvariablen für Geburtstag

    // Definieren Sie ab hier die KOnstruktoren für Geburtstag
    /**
     * Konstruktor für Objekte der Klasse Geburtstag
     */
    public Geburtstag()
    {
        // Objektvariable initialisieren
    }

public void eingabe()
{
names=new ArrayList<String>();
dates=new ArrayList<String>();
}
public void setName()
{
System.out.println("Bitte geben Sie die Namen ein: ");
name=liesString();
if (name.equals("ende"))
{
ausgabe();
System.exit(0);
}
else{

names.add(name);

System.out.println("Bitte geben Sie das Geburtsdatum ein: ");
date=liesString();
try{
Date dat=(new SimpleDateFormat("dd.MM.yyyy")).parse (date);
}
catch(Exception e){
System.out.println("Bitte gültiges Format eingeben");
}
dates.add(date);
this.setName();
}
}

public void ausgabe()
{
for (int i=0; i<= names.size()-1; i++) 
i=i+1;
System.out.print( "\t"+names+"\t"+dates);

}


public static String liesString()
{
BufferedReader B = new BufferedReader(new InputStreamReader(System.in));

try {
return B.readLine();
} 
catch (Exception e) {
return "?";
}
}
}
```


----------



## Fluppie (8. Jan 2007)

Wie gibt man denn die einzelnen Elemente des ArrayLists aus? Also immer nacheinander?


----------



## muhkuh199999 (8. Jan 2007)

wirft er bei dir keine fehler wegen der arraylist aus???

in zeile 54 ist in meinen augen das i=i+1; überflüssig da du ja schon  in zeile 53 i++ hast.
dann würde ich die ausgabe bei zeile 55 folgender maßen machen:


```
System.out.print( "\t"+names.get(i)+"\t\n"+dates.get(i));
```

wobei ich nicht weiss ob das klappt, habs nicht getestet.
aber du solltest dir vielleicht die ausgabe methode noch mal genau angucken. ich hätte das ganz anders mit den beiden arraylisten gemacht....


----------



## Fluppie (8. Jan 2007)

Danke für deine Hilfe. Habs jetzt, musste nur noch die \t und \n etwas anders setzen: 


```
public void ausgabe()
{
for (int i=0; i<= names.size()-1; i++) 
 System.out.print( "\n"+names.get(i)+"\t"+dates.get(i));

}
```

Hmm wie hättest du es denn gemacht?


----------



## eldios (8. Jan 2007)

da du 2 arraylisten hast ist es etwas ungünstig nur eine nach der länge abzufragen.
du fragst ja gerade nur die name arraylist nach der länge ab, dein glück hier ist das die name und datum listen gleichlang sind.
wenn sie unterschiedlich wäre würdest du ne execption bekommen...

wie gesagt in diesem fall passst es wohl, aber beim nächsten mal würde ich mich nicht drauf verlassen das die arraylisten gleichlang sind...


----------



## Fluppie (8. Jan 2007)

hmm, stimmt hast recht. Das könnte ich noch ändern


----------

