if - Statement erkennt variable nicht.

PaddyFH

Mitglied
Ich habe das Problem, dass ich eine Klassen - variable innerhalb einer Methode ändern will. Das tut sie scheinbar auch, wenn ich das mit
Java:
System.out.println(variable)
teste. Jedoch wird das aus irgendeinem Grund nicht von dem if - Statement erfasst:
Java:
public class Demo {

   static int turns = 1;
   
   public static void main(String[] args) {

       if(turns == 2) {   
           
           turns = 1;
            System.out.println(turns);
        }   

       else {       
             
            turns = 2;
            System.out.println(turns);
        }   
         
   }

}
Schonmal vielen dank für die Hilfe!
 
Vielleicht erstmal zur Erklärung, wie die Abarbeitung der Anweisungen in einem Programm generell funktioniert:
Wenn man nichts anderes tut, werden die Anweisungen in einer Methode von oben nach unten ausgeführt und sie werden auch nur ein einziges Mal pro Aufruf der Methode ausgeführt (wenn man nichts besonderes anderes tut). Das heißt, wenn die main-Methode beim Start deines Programmes ausgeführt wird, steht da ja zuerst eine if-Anweisung. Davon wird die Bedingung ausgewertet und dementsprechend in den jeweiligen Zweig der if-Anweisung gesprungen und die Anweisungen in diesem Zweig werden dann wieder von oben nach unten ausgeführt. Fertig. Anschließend beendet sich dein Programm.
Wenn du willst, dass ein Stück Code mehrere Mal ausgeführt wird (was ich oben mit "etwas besonderes anderes tun" meinte), brauchst du eine Schleife. Google mal nach "Java loops".
 
Ich hab das Ganze mal zu dem hier geändert
Java:
public class Demo {

   static int turns = 1;
 
   public static void main(String[] args) {

       while(turns == 2) {
        
           turns = 1;
            System.out.println(turns);
        }

       while(turns == 1){    
          
            turns = 2;
            System.out.println(turns);
        }
      
   }

}
Aber die erste while schleife wird nach dem Ausführen der ersten nicht ausgeführt, obwohl "turns" jetzt 2 wäre.
 
Du scheinst Schleifen leider noch nicht ganz verstanden zu haben. Das Programm springt nicht einfach bei Beenden der letzten Schleife zurück zur ersten Schleife. Nur Schleifen können innerhalb ihres Bodies von unten nach oben springen. Du hättest also einfach deinen initialen Code in eine Schleife packen müssen.
 
Du bekommst eine endlosschleife dann war das mit dem if schon besser da hast du wenigstens ein ende 🙂

Dennoch hab ich für dich ein Tip pack mal die if in einer while schleife besser in einer dowhile schleife dann bekommst du was du willst.
 
Wenn du mit der Sprache Probleme hast, dann versuch als erstes, das Ganze mit Worten zu beschreiben, besser noch: in einem Struktogramm aufzuzeichnen (übresichtlicher), dann musst du dich nicht von Anfang an mit dem Syntax rumschlagen.
Das macht dein aktueller Code zum Beispiel:
Solange turns gleich 2 ist, soll turns auf 1 gesetzt und ausgegeben werden.
Danach
Solange turns gleich 1 ist, soll turns auf 2 gesetzt und ausgegeben werden.
Ende

Das ist wohl kaum das, was du willst.
Fang also erst mal mit der umgebenden Schleife an: Was ist die Abbruchbedingung der Schleife, bzw. wie lange soll sie laufen?
Wenn du das hast, dann kümmerst du dich darum, was innerhalb der Schleife passieren soll (da war dein erster Ansatz schon mal nicht schlecht).
 
Das ist der Tipp für Fremdsprachen 🙂
Wenn jemand syntaktisch korrekt Schleifen und Abfragen programmieren kann, sein gefühlte 5 Zeilen langer Code aber nicht macht, was er will, dann ist das kein Problem mit der Sprache, sondern ein Verständisproblem der Programmiergrundlagen.
Oder glaubst du, dieser Code würde in VC, C++, Basic oder Pascal das machen, was er soll?

Wenn ich auf deusch keine Pizza bestellen kann, ist es sinnlos, mir das in Italienisch beibringen zu lassen.
 

Zurück
Oben