Ein Bauer auf seinem Hof eine unbekannte Anzahl von Hühnern und Hasen. Diese Tiere haben sich in den letzten Jahren stark vermehrt. Deshalb möchte der Bauer wissen, wie viele Hasen und wie viele Hühner auf seinem Hof leben. Also schickt der Bauer seinen Lehrling, um die Tier zu zählen.
Nach einiger Zeit kommt der Lehrling zurück und verkündet stolz:
Wie kann der Bauer die Anzahl der Hasen und Hühner berechnen?
Der Bauer fragt eine befreundete Informatikerin um Hilfe. Sie schlägt ihm folgendes vor:
Beine = 4 * Anzahl Hasen + 2 * Anzahl Hühner
Anzahl Tiere: 10 Anzahl Beine: 32 Annahme: 10 Hasen und 0 Hühner Berechnen: (10 Hasen * 4 Beine) + (0 Hühner * 2 Beine) = 40 Beine Ist die berechnete Anzahl Beine (40) grösser als die tatsächliche Anzahl (32)? => JA Neu: 9 Hasen und 1 Huhn Berechnen: (9 Hasen * 4 Beine) + (1 Huhn * 2 Beine) = 38 Beine Ist die berechnete Anzahl Beine (38) grösser als die tatsächliche Anzahl (32)? => JA Neu: 8 Hasen und 2 Hühner Berechnen: (8 Hasen * 4 Beine) + (2 Hühner * 2 Beine) = 36 Beine Ist die berechnete Anzahl Beine (36) grösser als die tatsächliche Anzahl (32)? => JA ... Neu: 6 Hasen und 4 Hühner Berechnen: (6 Hasen * 4 Beine) + (4 Hühner * 2 Beine) = 32 Beine Ist die berechnete Anzahl Beine (32) grösser als die tatsächliche Anzahl (32)? => NEIN Die Lösung ist: 6 Hasen und 4 Hühner
Zunächst müssen Sie die variablen und konstanten Werte für dieses Programm bestimmen. Zur Erinnerung:
Welche beiden Konstanten benötigt unser Programm? Notieren Sie zu jeder Konstante
Welche fünf Variablen benötigt unser Programm? Notieren Sie zu jeder Variable:
Die befreundete Informatikerin hat die Logik schon programmiert. Allerdings fehlen einige Variablen.
Ergänzen Sie die Deklarationen und Variablen im Programmcode.
Ändern Sie nur die mit TODO
markierten Stellen.
TODO start declare all variables
und TODO end declare all variables
.TODO
im Programmablauf mit den richtigen Variablen.Der Benutzer soll die Anzahl der Tiere und Beine in der Konsole (Eingabeaufforderung) eingeben. Dazu nutzen wir den bereits vorgegebenen Befehl
variable = scanner.nextInt();
Der Befehl scanner.nextInt()
wartet auf die Benutzereingabe und speichert die Eingabe in der variable
.
Sie müssen nur noch die richtige Variable angeben, um die Eingabe zu speichern.
import java.util.Scanner; /** * calculate the number of rabbits and chickens * * @author Marcel Suter * @version 1.0 * @since 2018-09-07 */ public class Animals { Scanner scanner; /** * constructor */ public Animals () { scanner = new Scanner (System.in); } /** * starts the execution * * @param args command line arguments */ public static void main (String[] args) { Animals program = new Animals (); System.out.println ("Willkommen"); program.calculate (); System.out.println ("Bye Bye!"); } /** * calculates the numbers */ private void calculate () { // TODO start declare all variables // TODO end declare all variables System.out.print ("Anzahl Tiere >"); TODO = scanner.nextInt (); // Benutzereingabe lesen System.out.print ("Anzahl Beine >"); TODO = scanner.nextInt (); // Benutzereingabe lesen TODO = TODO; // Anzahl Hasen ist gleich Anzahl Tiere TODO = 0; // Anzahl Hühner ist gleich Null TODO = (TODO * 4 + TODO * 2); while (TODO > TODO) { TODO = TODO - 1; TODO = TODO + 1; TODO = (TODO * 4 + TODO * 2); } System.out.println ("Es sind " + TODO + " Hasen und " + TODO + " Huehner"); } }
Probieren Sie Ihr Programm mit unterschiedlichen Anzahlen von Tieren / Beinen aus. Durch das Ausprobieren verschiedener Kombinationen, versuchen wir Fehler in der Logik zu finden.
(tiere*2) <
= beine <
= (tiere*4)
).beine > tiere*4
)beine < tiere*2
)Beim Testen ist Ihnen aufgefallen, dass Ihr Programm noch fehleranfällig ist. Versuchen Sie das Programm so umzuschreiben, dass der Benutzer nur eine realistische Anzahl Beine eintragen kann, so dass die Berechnung immer möglich ist.
Vielleicht hilft ihnen dieses Code-Schnipsel weiter:
int minumumFuerZahl = ?; int maximumFuerZahl = ?; int zahl = scanner.nextInt(); while(zahl >= minumumFuerZahl || zahl <= maximumFuerZahl){ System.out.print("Zahl nicht möglich, bitte erneut eingeben >"); zahl = scanner.nextInt(); }
Ihr Programm überprüft mittlerweile ob die eingegebene Zahl auch realistisch ist, ergänzen Sie den Code nun, damit auch nur natürliche Zahlen (keine Buchstaben, Kommazahlen, etc.) eigeneben werden können.
Vielleicht hilft ihnen dieses Code-Schnipsel weiter:
int zahl; System.out.print("Zahl eingeben >"); while(!scanner.hasNextInt()){ // Überprüfen ob der User eine Zahl eigegeben hat System.out.print("Bitte eine natürliche Zahl eingeben. Zahl >"); scanner.nextLine(); // Scanner leeren, damit der User erneut eine Zahl eingeben muss } zahl = scanner.nextInt(); // Überprüfte Zahl einlesen