doppelte for-Schleife

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hi Leute!!!

ich brache mal dringend eure hilfe!

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


Code:
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

Top Contributor
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?
 
G

Guest

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

Guest

Gast
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

Top Contributor
Die äussere Schleife wird mindestens(erklär ich später :D ) 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?
 
G

Guest

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

Wildcard

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

Guest

Gast
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

Top Contributor
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.
 
G

Guest

Gast
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
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben