Java Tutorium

[if/else/switch]

Kontrollstrukturen

If - Anweisung

Der if-Befehl wird in Programmen immer dann angewandt, wenn auf eine Bedingung unterschiedlich reagiert werden soll. Dabei wird innerhalb einer Bedingung meist kontrolliert, ob eine Variabel größer, kleiner oder gleich einem bestimmten Wert ist.
Die If-Anweisung folgt dieser Syntax:

if (Bedingung) {
  Anweisung;
}

Beispiel

// Dieses Programm fragt ab, ob eine Variable größer als 7 ist....
class VariablenTest {
  public static void main(String[] args) {
    int zahl;
    zahl = 5;
    if (zahl < 7)
      System.out.println("Die Zahl ist kleiner als 7!");
  }
}
/* Dieses Programm berechnet die Anzahl der Studenten in den
 * einzelnen Kursen Programmieren für Geistes- und
 * Sozialwissenschaftler
 */

class KursTeilnehmer {
  public static void main (String [] args) {
/* Deklaration und Initalisierung der Variablen */

    // gibt Anzahl der Studenten im Raum an
    int anzahlStudis = 51;
    // Anzahl der Studenten im Dienstags-Kurs
    int kursDienstag = 0;
    // Anzahl der Studenten im Mittwochs-Kurs
    int kursMittwoch = 0;

    // Berechnung und Festlegung der Variablen
    // kurs-Dienstag und Mittwoch
    System.out.println("Dieses Programm berechnet die"+
      "Anzahl der Studenten in den einzelnen Kursen...");
    if (anzahlStudis > 35) {
      System.out.println("Es gibt zuviele Studenten für nur"+
        "einen Kurs");
      kursMittwoch = 35;
      kursDienstag = anzahlStudis - kursMittwoch;
    }

    System.out.println("Im Dienstagskurs sind "+kursDienstag+
      " Studenten!");
    System.out.println("Im Mittwochskurs sind "+kursMittwoch+
      " Studenten!");
  }
}

Wie man in den obigen Beispielen sehen kann, werden in den Zeilen mit der If-Abfrage die Bedingungen immer in einer runden Klammer geschrieben. Diese Bedingungen können immer nur wahr oder falsch sein. Wenn eine Bedinung wahr ist, dann wird die Anweisung hinter der Bedingung ausgeführt. Wenn Sie falsch ist, dann wird sie nicht ausgeführt.

Die Bedingung kann auch nur eine boolesche Variable darstellen. Da boolesche Variable per definitionem wahr oder falsch sein können reicht es aus, nur die Variable in Klammern zu setzen.

Beispiel:

class TestBoolean {
  public static void main(String[] args) {
    boolean tutorIstRasiert;
    tutorIstRasiert = false;

    if (tutorIstRasiert) {
      System.out.println("Der Tutor sollte sich"+
        "lieber nicht rasieren");
      System.out.println("Ohne Bart sieht er fürchterlich"+
        "aus...");
    }
  }
}

If - Anweisung mit Else

In vielen Fällen ist es praktisch, nicht nur Anweisungen für den Fall anzugeben, dass die Bedinung wahr ist, sondern auch für den Fall dass sie falsch ist.

Hierfür gilt folgende Syntax:

if (Bedingung) {
  Anweisung;
}
else {
  Anweisung;
}

In der Praxis sieht das wie folgt aus:

class TestBoolean2 {
  public static void main(String[] args) {
    boolean tutorIstRasiert;
    tutorIstRasiert = false;

    if (tutorIstRasiert) {
      System.out.println("Der Tutor sollte sich lieber"+
        "nicht rasieren");
      System.out.println("Ohne Bart sieht er fürchterlich"+
        "aus...");
    }
    else {
      System.out.println("Der Tutor sollte sich endlich mal"+
        "wieder rasieren.");
      System.out.println("Dann sieht er besser aus");
    }
  }
}


Switch - Anweisung

Die SWITCH-Anweisung ist eine Erweiterung der IF-Anweisung, wenn die zu überprüfende Variable mehrere Werte annehmen kann und für jeden einzelnen Wert eine bestimmte Anweisung ausgeführt werden muss.

Die Syntax lautet:

switch (variable) {
  case wert1: Anweisung1; break;
  case wert2: Anweisung2; break;
  case wert3: Anweisung3; break;
  (..)
  default: Anweisung4; break;
}

Hier gibt variable die zu überprüfende Variable an. Für wert1-wertx werden die unterschiedlichen Werte angegeben, die die Variable annehmen kann. Danach wird die Anweisung(en) angegeben. Hinter jeder Anweisung muss ein break; zu stehen, wenn nur die direkt dahinter stehende Anweisung ausgeführt werden soll. Steht kein break; wird jeder weitere case behandelt, bis ein break;-Befehl folgt. default steht für alle Werte, die nicht einzeln als case behandelt wurden.

Beispiel:

class Anwesenheit {
  public static void main (String[] args) {
    int anzahlStudis;

    anzahlStudis = 9;

    switch (anzahlStudis){
      case 1:
      case 2:
      case 3:
      case 4:
      case 5: System.out.println("Was nur so wenig?"); break;
      case 6:
      case 7:
      case 8:
      case 9:
      case 10:
      case 11: System.out.println("Immer noch etwas wenig"); break;
      default: System.out.println("Ok es sind genug!"); break;
    }
  }
}

Für die definierte Variable "anzahlStudis" können verschiedene Werte angenommen werden. Für jeden einzelen Wert(bereich) gibt es eine besondere Ausgabe. Wenn "anzahlStudis" kleiner als 6 ist wird "Was nur so wenig?" ausgegeben - für Werte zwischen 6 und 11 wird "Immer noch etwas wenig" ausgegeben und für alle anderen Werte ist der Programmierer zufrieden - "Ok es sind genug!".


Aufgaben

P.S. Wer versucht ist, sich nicht den Kopf zu zerbrechen und einfach die Beispiele kopiert lernt nix dabei. Die Beispiele sind nur dazu da, um am Ende eines erfolgreichen Programmes nachzuschauen, wie jemand anderes das Problem löst. Wer selbst nicht weiterkommt soll mich fragen, oder den Nachbarn!

Aufgabe Beispiele Hinweise
Erstelle ein Programm, das ausgibt, ob eine Zahl größer, kleiner der Zahl 27 ist. Ändere danach das Programm so ab, dass zuerst getestet wird ob die Zahl gleich 27 ist und danach ausgegeben wird ob sie größer oder kleiner ist. Test27.java Programmierung über IF und ELSE, bzw mit verschachtelter IF und einer IF-ElSE - Anweisung
Erstelle ein Programm, das bei einem (festgelegten) Variablenwert zwischen 1 und 12 den Monatsnamen angibt. MonatsNamen.java Programmierung über SWITCH-Anweisung
Erstelle ein Programm, das die einzelne Anzahl der Tage aller Monate eines bestimmten Jahres angibt TageImMonat.java Programmierung über SWITCH-Anweisung
Kombiniere die beiden letzten Programme so, dass sowohl der Monatsname als auch die Tage des Monats ausgegeben werden. MonatsInfo.java Mit dem Befehl System.out.print wird kein (!) Zeilenumbruch hinter eine Ausgabe eingefügt