"Grundkurs Programmieren in Java - (7. Auflage, 2014)"
2001-2014, Carl Hanser Verlag

Lösungsvorschlag zu Aufgabe 4.23 (Version 3.0)

(c) 2001-2014 D. Ratz, J. Scheffler, D. Seese, J. Wiesenberger

Beispiel A:

Der (durch Block-Klammerung verdeutlichte) logische Programmablauf ist:
    if (x < 5)  
      {  if (x < 0) 
           {   
              System.out.println("x < 0"); 
           } 
         else 
           {   
              System.out.println("x >= 5"); 
           } 
      } 
woran man den Fehler sofort erkennt. Korrekt wäre:
    if (x < 5)  
      {  if (x < 0) 
           { 
             System.out.println("x < 0"); 
           } 
      }    
    else 
      {   
         System.out.println("x >= 5"); 
      }     


Beispiel B:

Der (durch Block-Klammerung verdeutlichte) logische Programmablauf ist
    if (x > 0)
      {
        System.out.println("ok! x > 0");
      }
    System.out.println("1/x = " + (1/x));
woran man den Fehler sofort erkennt. Korrekt wäre
    if (x > 0)
      {
        System.out.println("ok! x > 0");
        System.out.println("1/x = " + (1/x));
      }


Beispiel C:

Der (durch Block-Klammerung verdeutlichte) logische Programmablauf ist
    if (x > 0)
      { } ;
    System.out.println("1/x = " + (1/x));
der Fehler ist also das Semikolon. Korrekt wäre
    if (x > 0)
      System.out.println("1/x = " + (1/x));

Beispiel D:

Im Beispiel werden x und y durch
    if (y > x)
      {  // vertausche x und y
         x = y;
         y = x;
      }
nicht vertauscht, sondern beide Variablen auf den gleichen Wert (nämlich den von y) gesetzt. Korrekt wäre:
    int dummy;
    if (y > x)
      {  // vertausche x und y
         dummy = x;
             x = y;
             y = dummy;
      }
Dies vorgehen nennt man auch Dreiecks-Tausch.

Quelltext: Falsch.java