Teil 3

Aus ProgrammingWiki
Archivierte Version vom 2014-09-17T20:21:39+00:00. Aktuelle Version

In Java können if-Konstrukte auch ineinander verschachtelt werden. Dies ist hilfreich, um komplexe Fallunterscheidungen abbilden zu können. Für zwei ineinander verschachtelte Bedingungen sieht das Schema wie folgt aus:

if(<bedingung1>){
  if(<bedingung2>){
    <anweisung>;
    ...
    <anweisung>;
  }else{
    <anweisung>;
    ...
    <anweisung>;
  }
}els
  <anweisung>;
  ...
  <anweisung>;
}</anweisung></anweisung></anweisung></anweisung></anweisung></anweisung></bedingung2></bedingung1>

Das heißt: "Wenn Bedingung1 und Bedingung2 erfüllt sind, führe den ersten Block von Anweisungen aus. Wenn Bedingung1 erfüllt ist und Bedingung2 nicht, führe den zweiten Block von Anweisungen aus. Wenn keine der Bedingungen erfüllt ist, führe den letzten Block von Anweisungen aus!"

Es sind beliebige weitere Verschachtelungen möglich. Der else-Block kann wahlweise weggelassen werden.


Wichtiger Hinweis

Für die nachfolgenden Aufgaben müssen wir uns kurz mit dem Datentyp String auseinandersetzen. Einer Variable vom Typ String können Sie einen Text in Anführungszeichen als Wert zuweisen.

Soweit so gut. Wenn wir Bedingungen formulieren möchten, bei denen Texte miteinander verglichen werden, benötigen wir die Methode equals. Wir verwenden sie wie folgt:

Für Texte ersetzt die Methode equals also den Operator ==. Näheres dazu erfahren Sie im Studium.

Aufgabe 1

Entwickeln Sie eine Methode, die vorhersagt, ob ein Apfelbaum Früchte tragen wird. Wenn er Früchte trägt, soll die Methode true zurückgeben, ansonsten false. Die Vorhersage hängt von den Parametern Alter, Sorte und Boden ab und wird von diesem Entscheidungsbaum abgeleitet:

baum.png

Die Methode soll in zwei Varianten bereitgestellt werden: einmal mit und einmal ohne verschachtelte Bedingungen!


Aufgabe 2

Entwickeln Sie ein kleines Expertensystem zur Entscheidungshilfe bei der Wahl des richtigen Kinderwagens. Der Entscheidungsbaum ist hier dargestellt (den gestrichelten Pfeil ignorieren wir einfach):

baum2.png

Als Starthilfe gebe ich schon einmal die Signatur der Methode vor: