"Grundkurs Programmieren in Java - (8. Auflage, 2018)"
2001-2018, Carl Hanser Verlag

Lösungsvorschlag zu Aufgabe 3.22 (Version 4.0)

(c) 2001-2018 D. Ratz, D. Schulmeister-Zimolong, 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