# Java Array List größe auslesen zur Suchfunktion



## blackhead77 (3. Mai 2008)

Ich habe eine suchfunktion erstellt die nach einer ID sucht die man eingegeben hat 
dazu benötig ich die Arraylist größe:




```
int suche(ArrayList<Pizzal> Speisekarte, int id) {
    for (int i = 0; i < Pizzal.size(); i++) {
      if ((liste.get(i).getName()).contains(suchname) ) {
        gefunden = gefunden + liste.get(i) + "\n";
      }
    return gefunden;
```
leider kennt er nicht size() in der for schleife

Wie muss ich size definieren?


----------



## SlaterB (3. Mai 2008)

die übergebene Liste heißt weder Pizzal (dein Code: Pizzal.size()) noch heißt sie liste (dein Code: liste.get(i))
sondern sie heißt Speisekarte! du kannst dir doch nicht lustige alternative Namen ausdenken

allerdings ist Speisekarte wirklich ein schlechter Name, nenne den Parameter liste und dann natürlich liste.size()

-----

wenn du nach einen suchname suchst, wo wird dieser definiert? was soll gefunden sein? muss auch irgendwo definiert sein
> gefunden = gefunden + liste.get(i) + "\n"; 
klingt nach String, der Rückgabewert der Operation ist aber int?

------

und warum übergibst du int id als Parameter der dann gar nicht verwendet wird?

> Ich habe eine suchfunktion erstellt die nach einer ID sucht 

bisher noch nicht


----------



## blackhead77 (3. Mai 2008)

Ok danke stehe etwas unter stess da sieht man dass nicht  :lol:


----------



## maki (3. Mai 2008)

Durch Listen läuft man mit Iteratoren, nicht mit dem Index


----------



## blackhead77 (3. Mai 2008)

habe noch ein Problem und zwar bei: getid()).contains(id)
kommt diese Fehlermeldung:

```
Bestellung.java:24:44: int cannot be dereferenced

  if ((this.Speisekarte.get(i).getid()).contains(id) ) {
```

Klasse


```
public int getid()
  {
    return this.id;
  }
```
Das heißt doch das es mit dem Int in getid nichts anfangen kann


----------



## SlaterB (3. Mai 2008)

das heißt, dass du auf den int-Wert, den getid() zurückliefert die Operation contains() aufrufen willst, 
das geht nicht, da int kein Objekt ist

schreibe

if (this.Speisekarte.get(i).getid() == id) {


----------

