# doppelte for-Schleife



## Guest (10. Mrz 2005)

Hi Leute!!!

ich brache mal dringend eure hilfe!

also es geht darum: ich hab ein programm das ich nur zur hälfte versehe



```
pulbic class Zahlen {

 puplic static void main (String[] args) {

    int Array[] = new int[8];
    
    for (int a=0; a<8; a++) {
       Array[a] = (int)(Math.randomm()*39+1);
       for (int b=0; b<a; b++) {
            if (Array[a] == Array[b])
            a--;
       }
    }

    for (int a=0; a<8; a++) {
        System.out.println(Array[a]);
    }

 }
}
```


so und meine frage dazu ist: wie muss ich den befehl *for (int b=0; b<a; b++) *verstehen???

_[Edit by Beni: Codetags]_


----------



## The_S (10. Mrz 2005)

for (int b = 0; b < a; b++)

heißt ganz einfach:

Mache eine for-Schleife (for)
erstelle den Integer b und weiße ihm den Wert 0 zu (int b = 0)
lass die schleife solange durchlaufen, wie b kleiner als a ist (b < a)
zähle bei jedem Durchlauf zu b eins dazu (b++)

Jetzt klar?


----------



## Guest (10. Mrz 2005)

aber warum schreibt man nicht einfach b<6 weil ja a<6 müsste doch auch b<a b<6 sein oder?


----------



## Wildcard (10. Mrz 2005)

Weil a sich im verlauf der Schleife ändert, und b immer nur bis a laufen soll.


----------



## Guest (10. Mrz 2005)

ich versteh das noch nicht so ganz!

ist a z.b. bei 1 wird array[1] zu z.b. 36

und was macht dann b in der zweiten for-schleife?

und überhaupt wie kann array[a] mit array* verglichen werden? 
array müsste doch eigentlich immer 0 sein weil doch gar keine werte für array festgeleft werden?*


----------



## Wildcard (10. Mrz 2005)

Die äussere Schleife wird mindestens(erklär ich später   ) 8 mal durchlaufen.
Die innere läuft in jedem dieser mindestens 8 durchläufe bis a-1 mal.
Im 6. durchlauf der äusseren also 5 mal.
Der Sinn davon ist das keine Zufallszahl 2mal vorkommt. Wenn in der äusseren eine Zufallszahl gesetzt wird, 
prüft die innere ob die Zahl schonmal im Array steht. Ist das der Fall wird a incrementiert, dieser Schleifendurchlauf also wiederholt(deshalb mindestens).
Klar?


----------



## Guest (10. Mrz 2005)

oder ist das so wenn a z.b. 1 ist dann
ist b<1 
also ist b=0??


----------



## Guest (10. Mrz 2005)

oh da war wohl jemand schneller 8)


----------



## Wildcard (10. Mrz 2005)

Wenn a =1 dann wird die innere Schleife 1mal aufgerufen, weil 0<1. Somit wird nur der erste array wert kontrolliert.


----------



## Guest (10. Mrz 2005)

oookkkk .... also das prinzip is schon mal richtig! genau das was du erklärt hast soll auch passieren!

ich bin nur ein bisschen langsam mit dem verstehen von java programmen ... aber bis dahin hab ichs glaub ich verstanden!

danke schon mal dafür ihr seit echt meine letzte rettung!!!!!!!!!

aber da ist noch das a-- das mir noch nicht ganz klar ist


----------



## Wildcard (10. Mrz 2005)

Oben schonmal erklärt:
Wenn in array[a] eine Zufallszahl steht die irgendwo im array[0 bis a-1] schonmal auftaucht, dann wird a incrementiert.
Der letzte Schleifendurchlauf wird also wiederholt und array[a] neu belegt.
Dadurch kann keine Zahl doppelt auftreten.


----------



## Guest (10. Mrz 2005)

ach so einfach geht das!!! ich glaube ich werde nie aus java schlau! aber trotzdem ddddddddaaaaaaaaaaannnnnnnnnnnnnnnkkkkkkkkkkkkkeeeeeeeeee für deine hilfe!!!!!!!!!!!!!!

ich muss das prinzip jetzt noch in ein anderes programm einbauen aber ich denk mal das wird nun nicht mehr das grosse problem werden ... aber vielleicht melde ich mich nachher noch mal


----------

