~Java4Beginners~
~Java4Beginners~

if und if/else

Bei der if-Anweisung handelt es sich um eine sogenannte Verzweigungsanweisung. Es wird eine Bedingung gestellt, und je nach dem, wie das Ergebnis der Bedingung lautet (true oder false) wird ein bestimmter Programmblock abgearbeitet.
Im täglichen Leben begegnen ihnen immer wieder Situationen, wo sie eine Entscheidung treffen und auf Grund dieser Entscheidung etwas ausführen. Nehmen wir mal an, sie befinden sich in einem Gebäude und möchten in ein bestimmtes Stockwerk.
Sie können sich nun entscheiden, ob Sie den Lift nehmen, oder ob Sie die Treppe nehmen. Wenn Sie den Lift nehmen, entscheiden Sie sich vor der Lifttüre, ob Sie nach oben oder nach unten fahren. Nach dem Einsteigen in den Lift kommt schon die nächste Entscheidung. Welchen Knopf muss ich drücken, um in die gewünschte Etage zu kommen.
Eine Verzweigungsanweisung besteht aus 2 grundsätzlichen Bestandteilen. Als erstes aus der Bedingungsanweisung, welche aus einem boolschen Ausdruck besteht und somit immer einen Wahrheitswert true oder false enthält, und aus dem Anweisungblock. Welcher Anweisungsblock ausgeführt wird, ist abhängig vom Ergebnis der Bedingungsanweisung.

If-Anweisung

Eingeleitet wird die If-Anweisung mit dem Schlüsselwort if. In Klammern wird dann die Bedingung angegeben, die erfüllt sein muss, damit der Anweisungsblock ausgeführt wird.

if (Bedingung)
{
    Anweisung(en);
}
Im nachfolgenden Quellcode wird anhand einer Benutzereingabe geprüft, ob der Benutzer volljährig ist. Wenn er volljährig ist, passiert nichts weiteres. Wenn er nicht volljährig ist, erfolgt eine Ausgabe, wie viele Jahre es noch dauert, bis er volljährig ist.

Sollte im Anweisungblock nur 1 Anweisung stehen, so ist es zulässig, die geschweiften Blockklammern wegzulassen.

import java.util.Scanner;

/**
 * Beispiel einer einfachen if-Anweisung
 * @author Markus Badzura
 */
public class IfAnweisung 
{
    static Scanner sc = new Scanner(System.in);
    public static void main(String[] args)
    {
        System.out.print("Bitte Alter eingeben: ");
        int alter = sc.nextInt();
        if (alter<18)
        {
            System.out.println("Es dauert noch "+(18-alter)+" Jahre bis zur Volljährigkeit");
        }
        /* Wenn nur eine Anweisung im Anweisungsblock einer If-Anweisung
           erfolgt, so können die geschweiften Blockklammern weggelassen werden.
        */
        if (alter>=18)
            System.out.println("Volljährig");
    }
}

if-else-Anweisung

Bei der einfachen If-Anweisung wurde nur der Bereich für true mit Anweisungen versehen. Bei der if-else Anweisung haben wir 2 Anweisungsblöcke. Einen Anweisungsblock, der ausgeführt wird, wenn die Bedingung true ergibt und einen Anweisungsblock, der bei false ausgeführt wird.
Für die if-else-Anweisung benötigen wir die Schlüsselwörter if und else.

if (Bedingung)
{
    Anweisungsblock true;
}
else
{
    Anweisungsblock false;
}
Im nachfolgenden Beispielprogramm wurde das Programm IfAnweisung soweit abgeändert, dass eine if-else-Anweisung konstruiert wurde.


import java.util.Scanner;

/**
 * Beispiel einer if-else-Anweisung
 * @author Markus Badzura
 */
public class IfElseAnweisung 
{
    static Scanner sc = new Scanner(System.in);
    public static void main(String[] args)
    {
        System.out.print("Bitte Alter eingeben: ");
        int alter = sc.nextInt();
        if (alter<18)
        {
            System.out.println("Volljährig in "+(18-alter)+" Jahren.");
        }
        else
        {
            System.out.println("Volljährig");
        } 
    }
}
Der Ablauf der if-Else-Anweisung ist wie folgt.
  • Auswertung der Bedingung (alter<18)
  • Wenn der Ausdruck true ergibt, d. h. der Wert für alter kleiner als 18 ist, werden die Anweisungen des true-Blockes abgearbeitet. In unserem Falle die Ausgabe: "Volljährig in x Jahren."
  • Wenn der Ausdruck false ergibt, d. h. der Wert für alter größer oder gleich 18 ist, werden die Anweisungen des false-Blockes abgearbeitet.
  • Die weitere Programmverarbeitung startet nach der if-else-Anweisung. Da keine weitere Anweisung folgt, ist das Programm hier beendet.

Ternary Operator

Eine ebenso mögliche Variante an Stelle einer If-Else-Anweisung ist die Verwendung des Ternary Operator, oder auch Conditional-Operator genannt.

Bedingung ? (Aktion wenn Bedingung true) : (Aktion wenn Bedingung false);
Das ganze sie in einem einfachen Java-Programm dann wie folgt aus.

/**
 * Beispiel eines Ternary Operators
 * @author Markus Badzura
 */
public class TernaryOperator 
{
    public static void main(String[] args) 
    {
        int alter = 17;
        String ausgabe = (alter<18) ? "minderjährig" : "volljährig";
        System.out.println("Mit "+alter+" ist man "+ausgabe);
    }
}

Verschachtelte If-Else-Anweisung

Ein True- oder False-Anweisungsblock kann auch aus einer erneuten Verzweigung bestehen. Dieses können Sie beliebig oft wiederholen. Allerdings wird dies äußert unübersichtlich. Für eine vielverzweigte Bedingung empfiehlt es sich die switch-Anweisung zu verwenden.
In nachfolgendem Beispiel sehen Sie eine solche Verschachtelung.


import java.util.Scanner;
/**
 * Beispiel einer verschachtelter if-Else-Anweisung
 * @author Markus Badzura
 */
public class IfElseVerschachtelt 
{
    static Scanner sc = new Scanner(System.in);
    public static void main(String[] args)
    {
        String ausgabe;
        System.out.print("Bitte Alter eingeben: ");
        int alter = sc.nextInt();
        if (alter<18)
        {
            if (alter<14)
            {
                ausgabe="Strafunmündig";
            }
            else
            {
                ausgabe="Strafmündig";
            }
        }
        else
        {
            ausgabe="Volljährig";
        }
        System.out.println(ausgabe);
    }
}

Beispielprogramm FC Bayern : Borussia Dortmund

In diesem Beispielprogramm werden für FCB und BVB Tore zufällig ermittelt (1 bis 10) und es erfolgt die Ausgabe des Spielergebnisses. Wenn es Unentschieden steht, soll als Ergebnis unentschieden ausgegeben werden, ansonsten soll der Sieger ausgegeben werden. Sollte mit einem Torunterschied von 3 Toren oder mehr gewonnen werden, soll zusätzlich die Meldung erfolgen, dass der Gegner deklassiert wurde.

/**
 * Beispielprogramm für IF-Anweisung
 * @author Markus Badzura
 */
public class FCB_BVB 
{
    public static void main(String[] args) 
    {
        int toreFCB = (int) (Math.random()*10+1);
        int toreBVB = (int) (Math.random()*10+1);
        System.out.println("FC Bayern : Borussia Dortmund\t"+toreFCB+" : "+toreBVB);
        if (toreFCB == toreBVB) 
            System.out.println("Ein gerechtes Unentschieden.");
        if (toreFCB > toreBVB)
            System.out.println("FC Bayern gewinnt gegen Borussia Dortmund.");
        if (toreFCB-3 >= toreBVB)
            System.out.println("FC Bayern deklassiert Borussia Dortmund.");
        if (toreFCB < toreBVB)
            System.out.println("FC Bayern verliert gegen Borussia Dortmund.");
        if (toreBVB-3 >= toreFCB)
            System.out.println("FC Bayern wird von Borussia Dortmund deklassiert.");     
        
    }
}

Beispielprogramm Schaltjahrberechnung

In diesem Beispielprogramm wird ermittelt, ob ein eingetragenes Jahr ein Schaltjahr ist oder nicht.
Ist die Jahreszahl durch vier teilbar, aber nicht durch 100, ist es ein Schaltjahr. 2008 fällt unter diese Regel.
Ist die Jahreszahl durch 100 teilbar, aber nicht durch 400, ist es kein Schaltjahr. 2100 wird kein Schaltjahr sein.
Ist die Jahreszahl durch 400 teilbar, dann ist es ein Schaltjahr. Deshalb war das Jahr 2000 ein Schaltjahr.

import java.util.Scanner;

/**
 * Berechnung Schaltjahr
 * @author Markus Badzura
 */


public class Schaltjahr {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Bitte geben Sie eine Jahreszahl ein, die überprüft werden soll, "
                + "ob es sich um ein Schaltjahr handelt oder nicht: ");
        int jahr = sc.nextInt();
        boolean sj = false;
        if (jahr%4 == 0) sj = true;
        if (jahr%400 == 0) sj = true;
        if (jahr%100 == 0 && jahr%400 != 0) sj = false;     
        String ausgabe = sj ? "ein" : "kein";
        System.out.println("Das Jahr "+jahr+" ist "+ausgabe+ " Schaltjahr");
    }
}
Man könnte die Prüfung auch zusammenfassen und ausgeben.

        System.out.println(" sj = ((jahr%4==0 && jahr%100!=0) || jahr%400==0)"); 
nach oben Java4Beginners -- Seitenversion 1.0 -- Stand: 2017-05-09