Ergebnis 1 bis 7 von 7
  1. #1
    Sobig Wurm Avatar von neocrom
    Registriert seit
    23.03.2009
    Beiträge
    220

    Standard Problem mit Schleife

    Hey ich schreibe gerade Game Of life vlt. kennts einer von euch ... mein Prob ist das er die Zählschleifen überhaupt nicht durchläuft O.o wo ist der Fehler?
    ... btw die Ganzen System.out.println(
    PHP-Code:
                 System.out.println("Treffer bei ("+x+","+y+") !");
                 for(
    int b=-1;b==1;b++)
                 {
                     
    System.out.println("Schleifendurchlauf für x , x=: "+b);
                     for (
    int a=-1;a==1;a++)
                     {
                         
    System.out.println("Schleifendurchlauf für y , y=: "+a);
                            if (
    field[x+a][y+b][0]==true)
                            {
                               
    System.out.println("Nachbar+1");
                              
    i++;
                            } 
                     }
                } 

  2. #2
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    Ich glaube du weißt nich genau wie FOR funktioniert...
    Die Syntax ist wie folgt:
    for( A ; B; C )
    B steht dabei für die Bedingung, die erfüllt sein muss, damit der Schleifenkörper ausgeführt wird.
    Dies wird bei FOR jeweils beim Eintreten in die Schleife und beim Beenden eines Durchgangs getan.
    Das Resultat dieses Vergleichs entscheidet darüber, ob nochmal in den Schleifenkörper gesprungen wird!

    Beispiel:
    Dein Code:
    for(int b=-1;b==1;b++)
    int b = -1 ist die Initialisierung und weist der Variable b den Wert -1 zu, welche vom Typ int ist!
    Nun kommt der Fehler:
    b == 1
    Java interpretiert das wie folgt: "tritt in die Schleife ein, wenn b gleich eins ist und wiederhole so lange, bis b ungleich eins ist"
    Da b nun aber bereits zu Anfang -1 ist, wird diese Bedingung nicht erfüllt - diese Schleife wird nie ausgeführt!
    Was du vielleicht meinst is:
    b < 2
    ... solange b kleiner als zwei ist.


    mfG. BlackBerry

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

  3. #3
    Sobig Wurm Avatar von neocrom
    Registriert seit
    23.03.2009
    Beiträge
    220

    Standard

    omg ja richtig *vor den Kopf hau* hatte denn boolschen wert falsch in erinnerung ( java ist ein weilchen her) hmm was auch ginge wäre <=1 ja danke mfg neo
    Geändert von neocrom (25.03.2009 um 15:41 Uhr)

  4. #4
    Der `Toastflüsterer` Avatar von AlterHacker
    Registriert seit
    27.09.2008
    Beiträge
    690

    Standard

    Ich weiß zwar nicht was du mit der Schleife da machen willst, aber ich würde das so realisieren:

    for(int x = 0; x < FELDER_X; x++){
    for(int y = 0; y < FELDER_Y; y++){
    //Hier kannst du dann auf dein Array zugreifen, also für Game of life etwa so:
    //getLivingNeighbours kannste dann ja schreiben
    if(getLivingNeighbours(x,y) < 3 || getLivingNeighbours(x,y)>6) newField[x][y] = 0;//Bei <3 oder >6 war doch tot, glaubch
    else newField[x][y] = 1;
    //Fertig^^
    }
    }

    Security is an illusion.
    Cheater : 8=o
    Normaluser : 8=======o
    Ich : 8================o

    BM: (4|2|0)

  5. #5
    Sobig Wurm Avatar von neocrom
    Registriert seit
    23.03.2009
    Beiträge
    220

    Standard

    so ähnlich bei >3 und <2 aber gibts mit sicherheit auch mit anderen Werten =)

  6. #6
    Anfänger
    Registriert seit
    15.02.2008
    Beiträge
    7

    Standard

    für die letzte schleife empfehle ich eine while schleife

    while(field[x+a][y+b][0]){
    System.out.println("Nachbar+1");
    }

    i++ erscheint mir unlogisch und unötig, da du gar es gar nicht deklariert hast und die schleife sowieso nur durchlaufen wird wenn die bedingung true ist. Allerdings wird dann die ganze zeit "Nachbar+1" ausgegeben, was mir auch nicht gerade logisch erscheint. vlt wolltest du das hier erreichen:

    while(field[x+a][y+b][0]){
    int i=1;
    System.out.println("Nachbar+ "+i);
    i++;
    }

    field array muss natürlich datentyp boolean sein, sonst geht das schonmal gar nicht
    1array=1datentyp, auch wenn 3 dimensional

    edit: der fehler mit den anderen for schleifen wurde ja schon aufgeklärt

  7. #7
    Sobig Wurm Avatar von neocrom
    Registriert seit
    23.03.2009
    Beiträge
    220

    Standard

    Kompletten Quote entfernt - Read the rules


    Ähm dir ist klar das dass nur ein Code ausschnitt war? natl. hab ich i deklariert aber nicht mit 1 das wäre ja unlogisch sonder mit -1 damit er sich selber nicht als Nachbar erkennt O.o ......

    und natl. hab ich auch das field array obben deklariert

    das ist ein ausschnitt aus einer FUnktion einer klasse der das array boolean field[][][]
    übergeben wird

    und das Problem hat sich längst erledigt =) aber trozdem ty für deinen Support und das Komplette Programm läuft der weilen in der Version 0.0.1 heißt ohne gui nur auf Konsole
    Geändert von H4x0r007 (29.03.2009 um 18:12 Uhr)

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •