Ab in den Süden! Möchtest Du auf die Philippinen fliegen, Ja oder Nein? Viele Fragen fordern eine Entscheidung an deren Ende es zwei Möglichkeiten gibt.
In diesem Artikel lernst Du die Struktur von Entscheidungen in Java kennen. Wir beschäftigen uns mit relationalen und logischen Operatoren zur Auswertung von Bedingungen. Außerdem lernst du verschachtelte Entscheidungen und eine Menüauswahl kennen.
Möchtest Du auf die Philippinen fliegen, Ja oder Nein? Willst Du Fluginformationen per SMS, Ja oder Nein?
Manche Entscheidungen im Leben sind einfach, manche bedeutungsvoll. Schreibe verschiedene Entscheidungen auf und markiere diejenigen, welche mit einer Ja-Nein-Entscheidung zu treffen sind. Kann man die anderen Entscheidungen auch auf eine Ja-Nein-Entscheidung zurückführen?
In einem Bewerbungsgespräch wirst Du gefragt, ob Du eher Anführer oder Ausführer bist. Viele glauben nun mit "Anführer" antworten zu müssen, aber besser wäre vielleicht eine dritte Variante in welcher man erklärt, wann man ein Anführer ist und wann eben nicht.
In der Programmierung ist es einfacher. Es gibt nur Entscheidungen die mit Ja oder Nein zu beantworten sind. Das ermöglicht überhaupt erst die notwendige Struktur.
Eine Entscheidung (engl. if/else statement, conditional statement) beginnt mit der Prüfung einer Bedingung. Falls die Bedingung erfüllt ist, wird der Ja-Zweig abgearbeitet, sonst der Nein-Zweig.
In der Programmiersprache Java wird dies folgendermaßen programmiert:
if(auswahl == 'j')
{ kostensms = 2.90;
}
else
{ kostensms = 0;
}
<
kleiner als
>
größer als
<=
kleiner gleich
>=
größer gleich
!=
ungleich
==
genau gleich
Zur Formulierung von Vergleichen benötigt man Vergleichsoperatoren. Das Ergebnis eines Vergleichs (z.B. x > y) lautet entweder ja oder nein, bzw. wahr (true) oder falsch (false). Intern stellt Java den Wahrheitswert mit dem Datentyp boolean
durch den Wert true
und false
dar. In der Programmiersprache C werden bspw. alle Zahlenwert die ungleich 0 sind als wahr interpretiert. Alle möglichen Vergleichsoperatoren werden in der Grafik gezeigt.
Wichtig: Verwechsele den Vergleichsoperator ==
nicht mit der Zuweisung =
.
Bedingung: x == 0
Zuweisung: x = 1
Autoren: G. Kompa, D. Supper
Pineingabe
welche den Anwender auffordert eine 4stellige Pin einzugeben. Anschließend überprüfen sie den eingegebenen PIN und geben dem Benutzer eine Rückmeldung, ob der PIN richtig oder falsch ist.if(versicherung == true){
if(ruecktritt == true){
kosten = 15;
}
if(gepaeck == true){
kosten = 3;
}
}
Auch eine verschachtelte Entscheidung ist möglich. Hierbei wird mindestens ein Anweisungsblock durch eine weiter Entscheidung ergänzt.
Dies ist bei mehrstufigen Entscheidungen sinnvoll. Möchte der Kunde bspw. eine Versicherung buchen, kann anschließend nach Reiserücktrittsversicherung und nach einer Gepäckversicherung gefragt werden.
Hinweis: Es gibt auch else-if
-Entscheidungsstrukturen deren Lesbarkeit allerdings nicht so gut ist. Ein Vorteil dieser Struktur besteht jedoch darin, dass weniger Bedingungen geprüft werden.
Autoren: D. Supper | binnendifferenziert
Suedseeurlaub
welche den Anwender für einen 600 EUR teuren Flug verschiedene Optionen abfragt: eine SMS-Benachrichtigung kostet 2,95 EUR, eine Reiserücktrittsversicherung 32 EUR und eine Gepäckversicherung 13 EUR. Ausgegeben wird der Gesamtpreis. Notiere die Zeitdauer.Suedseeurlaub
. Erstelle hierzu ein neues Projekt 02-Entscheidungen
.Zum Auswerten einer j/n-Abfrage benötigt man folgende Syntax:
import java.util.Scanner;
public class Suedseeurlaub{
public static void main(String[] args){
String auswahl;
Scanner keyboard = new Scanner(System.in);
System.out.print("Versicherung (j/n): ");
auswahl = keyboard.next();
if(auswahl.charAt(0) == 'j'){
...
}
}
}
Statt if(auswahl.charat(0) == 'j')
kann man auch die Syntax if(eingabe.matches("j"))
verwenden. Dies liegt daran, dass die Methode den Vergleich durchführt und direkt true
oder false
zwischen die Klammern schreibt.
Programmiere eine verschachtelte Entscheidung.
!
nicht
&&
und
||
oder
Logische Operatoren können mehrere Vergleiche miteinander verknüpfen.
Beispiel: „Wenn Entschädigung und Flugdatenänderung per SMS gewünscht wird, betragen die Kosten 11,90 EUR.“
if(sms == true && entsch == true) kosten = 11.9;
Dabei hat der nicht-Operator den höchsten Vorrang, gefolgt von dem und-Operator. Der oder-Operator hat den niedrigsten Vorrang. Falls eine andere Gewichtung gewünscht ist kann man dies durch Klammersetzung erreichen.
Autoren: D. Supper | binnendifferenziert
In dieser Aufgabe wird das Arbeiten mit logischen Verknüpfungen trainiert.
LogischeVerknuepfung
. Dabei sollen zwei ganze Zahlen x
, y
, deren Summe maximal 100 ist, eingelesen und deren Werte ausgegeben werden.Ein Informatiker und seine Frau sitzen beim Frühstück: Sie: "Du Mausi, wir haben kein Brot mehr. Könntest du bitte zum Bäcker gehen und eins holen? Und falls sie Eier haben, bring 10 Stück mit."
Als er wieder zurück kommt hat er 10 Brote dabei. Sagt sie: "Warum nur hast du 10 Brote gekauft?" Er: "Sie hatten Eier."
Wähle die korrekten Aussagen aus.
int v = 10, w = 100;
if(v!=0 || v>w)
if(v!=0 || v>w || w-v==90)
int a = 10, b = 100;
if(a!=0 && !(a<9))
if(a!=0 && !(a<9) || b-a==89)
int n = 1, m = 17;
if(m>0 || n>m && m!=17)
if(n>0 && m>0 || n>m && m!=17)
double x = 2.5, y = 1.0;
if(x>2.4 || y<=1.1)
if(x>2.4 && y<=1.1)
int s1 = 10, s2 = -2;
if(s1!=0 && !(s2<9))
if(s1!=0 && !(s2<9) || s2==89)
boolean k=true; int x2=-2;
if(k && !(x2>2))
if(k && !(x2>2) || !k)
Autoren: G. Kompa, D. Supper | binnendifferenziert
In unserem Kalender sind zum Ausgleich der Jahreslänge in regelmäßigen Abständen Schaltjahre eingebaut. Ein astronomisches Jahr hat dabei 365,24219 Kalendertage. Zur exakten Festlegung der Schaltjahre dienen folgende Regeln:
Schaltjahre
, welche berechnet, ob eine vom Benutzer eingegebene Jahreszahl ein Schaltjahr ist oder nicht.Verwende logische Operatoren.
if(jahr%4 == 0){
schaltjahr = true;
if(jahr%100 == 0){ ...
if(jahr%4 == 0 && ...)
Autoren: D. Supper | binnendifferenziert
Der Body-Mass-Index, kurz BMI, ist eine Gewichtsklassifikation, welche unser Gewicht $m$ (in kg) in ein Verhältnis zur Körpergröße $h$ (in m) setzt:
$$BMI=\frac{m}{h^2}$$ Dabei gelten folgende EinteilungenBodyMassIndex
, welche den BMI einer Person berechnet und entscheidet, ob diese Untergewicht, Übergewicht oder Normalgewicht hat.Die Weltgesundheitsorganisation WHO hat hierfür Standards festgelegt.
bmi=gewicht/(koerpergroesse*koerpergroesse);
if(bmi < 18,5){
...
switch(selektor){
case 1: text = "Kaffee";
break;
case 2: text = "Espresso";
break;
default: text = "Fehler";
}
Eine Menüauswahl (auch Mehrfachauswahl) eignet sich zum Programmieren von Menüs. Nachdem Schlüsselwort switch
steht die Variable (selektor)
. Der Datentyp der Variable ist int
, char
oder String
.
Die einzelnen Fälle werden mit dem Schlüsselwort case
und dem entsprechenden Wert der Variablen geprüft: bei Ganzzahlen case 1:
, bei Zeichen case 'K'
oder Zeichenketten case "Kaffee"
. Der Datentyp der Variablen muss entsprechend gewählt werden.
Mit break;
beendet man die Auswahl.
Autoren: D. Supper | binnendifferenziert
Zur Auswahl stehen KAFFEE (1), LATTE MACCHIATO (2), CAPPUCCINO (3), ESPRESSO (4) und Mokka(5). Die Aufgabe besteht darin, das Auswahlmenü des Kaffeeautomaten zu programmieren.
Kaffeeautomat
, mit der Variable int selektor
.String selektor
. Zur Auswahl steht KAFFEE(K)...Für jeden zusätzlichen Wert benötigt man einen eigenen Fall. Außerdem können auch Zahlen als Zeichen geprüft werden.
break
. Notiere die Auswirkung.
int selektor;
selektor = kb.nextInt();
switch(selektor){
case 1: ...
String selektor;
selektor = kb.next();
switch(selektor){
case "K": ...
switch(selektor){
case "1":
case "k":
case "K": ...
break
wird die Auswahl nicht beendet und der Anweisungsblock des nächsten Falls abgearbeitet.die Entscheidung, -en | zu jeder Entscheidung gehört eine Bedingungsprüfung if(..) . Ist die Bedingung wahr wird der erste Anweisungsblock nach if(..){ } abgearbeitet, falls nicht der zweite Anweisungsblock nach else{ } . |
die Bedingung, -en | die Bedingung wird mit Hilfe von Vergleichsoperatoren geprüft und ergibt den Wert true oder false |
der Vergleichsoperator, -en | Vergleichsoperatoren sind:
< kleiner als, > größer als, <= kleiner gleich, >= größer gleich, != ungleich, == genau gleich |
der logische Operator, -en | logische Operatoren dienen zum verknüpfen mehrerer Bedingungen: ! nicht, && und, || oder |
verschachteln | Entscheidungen können verschachtelt werden. Das ist dann sinnvoll wenn die zweite Entscheidung von der ersten abhängig ist. |
die Mehrfachauswahl | Programmierstruktur für ein Menü. |