Übung 99 Flaschen Bier aus dem Buch Java von Kopf bis Fuß

Felge

Mitglied
Hallo Zusammen,

möchte mich zunächst vorstellen. Ich bin neu hier im Forum und hoffe, dass ihr mir vielleicht jetzt bzw. das ein oder andere Mal weiterhelfen könnt. Ich bin absoluter Java-Anfänger. Ich bin zwar im IT-Bereich tätig und habe auch in irgendeiner Form mit Programmieren zu tun; jedoch bisher nie mit einer objektorientierten Programmiersprache wie JAVA. Vermutlich ist es auch sehr naiv, mir das selbst beizubringen. Aber genau damit habe ich jetzt begonnen und zwar mit dem o. g. Buch, welches mir hierfür empfohlen wurde. Ich finde, dass das auch recht gut geschrieben ist. Ob das hilft weiß ich natürlich noch nicht. So. Jetzt aber "Butter bei de Fische". Auf den ersten Seiten dieses Buches gibt es eine Aufgabe, in der man den Kinderklassiker 99 Flaschen Bier programmieren soll. Das kannte ich bisher vorher nicht. Ich hoffe, dass diese Übung irgendjemand von Euch kennt. Tippt man den Code wie er im Buch steht einfach ab, erhält man folgende Ausgabe:

99 Flaschen Bier im Kühlschrank
99 Flaschen Bier im Kühlschrank
99 Flaschen Bier
Hol eine raus
Und lass sie rumgehen
98 Flaschen Bier im Kühlschrank
98 Flaschen Bier im Kühlschrank
98 Flaschen Bier .... ...

Unter der Übung steht, dass der Code einen kleinen Haken hat und ob man in der Lage ist, den zu beseitigen. Leider wird nirgendwo im Buch darauf hingewiesen, welches der Haken ist. Ich vermute ja, dass das Problem halt ist, dass immer wieder auch ein zweites Mal die Sache mit dem Kühlschrank auftaucht... Ich habe den Code folgendermaßen geändert und möchte eigentlich nur fragen, was Ihr davon haltet: (Sollte so eine Frage hier nicht angebracht sein, bitte ich dies zu entschuldigen)

ich hoffe, ich mache das jetzt richtig:

Java:
public class BierLied {
public static void main (String[] args) {
int bierAnzahl = 99;
String wort = "Flaschen";

while (bierAnzahl > 0) {
   if (bierAnzahl == 1) {
	wort = "Flasche"; //Singular, wie in EINE Flasche
}

System.out.println(bierAnzahl + " " + wort + " Bier im Kühlschrank");
System.out.println(bierAnzahl + " " + wort + " Bier.");
System.out.println("Hol eine raus.");
System.out.println("Und lass sie rumgehen.");
bierAnzahl = bierAnzahl - 1;

} // Ende while-Schleife

System.out.println("Kein Bier mehr im Kühlschrank");

} // Ende main-Methode
} // Ende Klasse

Der Originalcode sah etwas anders aus. Da befand sich innerhalb der Schleife noch eine If- und eine Else-Aktion.

Könnt Ihr helfen ?

Vielen Dank und Grüße

Felge
 
Herzlich willkommen im Forum !

An diese Aufgabe erinnere ich mich auch noch, hab damals mit dem selben Buch programmieren gelernt. Verstehe aber jetzt nicht dein Problem, so wie dein Code aussieht müsste die Ausgabe so lauten:

99 Flaschen Bier im Kühlschrank
99 Flaschen Bier.
Hol eine raus.
Und lass sie rumgehen.

Ist also richtig.
 
Hallo,

vorab: Vielen Dank für die schnelle Rückmeldung.

Es tut mir leid; es war auch eigentlich keine richtige Aufgabe. Ich hatte gehofft, dass der von mir eingefügte Code so richtig ist. Nur im Buch gibt es leider keine Musterlösung dafür und der Ursprungscode sieht wie gesagt doch ein wenig anders aus.

Das hier ist der Ursprungscode:

Java:
public class BierLied {

    public static void main (String[] args) {
        int bierAnzahl = 99;
        String wort = "Flaschen";
        
        while(bierAnzahl > 0) {
            
            if(bierAnzahl == 1) {
            wort = "Flasche"; //Singular, wie EINE Flasche
            }
        
            System.out.println(bierAnzahl + " " + wort + " Bier im Kühlschrank");
            System.out.println(bierAnzahl + " " + wort + " Bier.");
            System.out.println("Hol eine Raus.");
            System.out.println("Und lass sie rumgehen");
            bierAnzahl = bierAnzahl - 1;
        
            if(bierAnzahl > 0) {
            System.out.println(bierAnzahl + " " + wort + " Bier im Kühlschrank");
            } else {
            System.out.println("Kein Bier mehr im Kühlschrank");
         } // Ende else
      } // Ende while-schleife
   } // Ende main-Methode
} // Ende Klasse

Eine weitere Frage noch: Schafft man es wirklich mithilfe eines solchen Buches Java zu erlernen ?

Danke und Grüße
Felge
 
Eine weitere Frage noch: Schafft man es wirklich mithilfe eines solchen Buches Java zu erlernen ?
Klar, wenn du nicht grad ne veraltete Version des Buches hast, bekommst du damit auf jeden Fall die Grundlagen + noch etwas erweiterte Kenntnisse rein, danach kommt halt das nächste Buch.

Falls du's für den Arbeitsbereich machen willst, wird es wohl sowieso auf ne Zertifizierung hinauslaufen, aber das Buch ist das beste Lernbuch für Anfänger auf dem deutschen/englischen Markt.
 
Der fehler den du bereits in deiner Version behoben hast, ist das der erste Satz doppelt wiederholt wird. Das erfolgt durch die Zeile
Java:
 if(bierAnzahl > 0) {
            System.out.println(bierAnzahl + " " + wort + " Bier im Kühlschrank");
welche du bereits richtigerweise entfernt hast. Bravo 😀
 
Ich bringe mir Java gerade auch mit dem Buch bei (hatte diese Aufgabe auch vorgestern). Darüber hinaus habe ich noch das Buch "Java for Dummies" in der 5. Ausgabe von Barry Burd. Hat auch einen eher lockeren, flapsigen Stil und gefällt mir sehr gut.
 
Hallo und willkommen,

für das Java von Kopf bis Fuß Buch gibt es viele Beispiele hier Index of /german_examples/hfjava2ger als download.

Ansonsten gibt es noch einen Link für die englischen Codebeispiele, in dem mehr Beispiele drin sind, der Code im englischen ist fast identisch nur die Variablen und Methoden etc. heißen halt anders 🙂

diesen finde ich leider gerade nicht mehr.😳 Kannst ja mal googeln evtl. hast du mehr glück.
 
Hallo Felge,

ich hab jetzt auch angefangen Java zu lernen mit dem gleichem Buch. Hab die 99 Flaschen Übung grade eben erfolgreich gelöst. Jedoch ist mein Code leider ein wenig länger als deiner, man kommt aber bei dem Resultat auf das gleiche raus! 🙂

Java:
public class BierLied {
	public static void main (String[] args) {
		int bierAnzahl = 99;
		String wort = "Flaschen";

	while (bierAnzahl > 0) {

		if (bierAnzahl == 1) {
			wort = "Flasche";
	}

		System.out.println (bierAnzahl + " " + wort + " Bier im Kuehlschrank");
		System.out.println (bierAnzahl + " " + wort + " Bier.");
		System.out.println ("Hol eine raus.");
		System.out.println ("Und lass sie rumgehen.");
		bierAnzahl = bierAnzahl - 1;

	
		if (bierAnzahl == 0) {
		
		System.out.println ("Kein Bier mehr im Kuehlschrank");
	} 
		
			
		}
	}
}

[OT]Bitte mich nicht erschlagen weil das Thema vom letzten Jahr ist. Hab es grad erst gelesen! 😳[/OT]
 
Hallo,
Habe auch gerade das Buch angefangen und habe das Problem auch schnell erkannt:
Die Zeile: "... Flasche(n) Bier im Kühlschrank" ist keineswegs falsch/zu viel. Wer das Lied kennt weis, dass die Anzahl der Flaschen am Ende jedes Abschnittes verringert wird, demnach wird auch klar, dass die erste Zeile der scheinbar "doppelten" Zeile die letzte Zeile der vorherigen Strophe ist.
Beweis hierfür ist, dass im ersten Part von 99 Flaschen (also ganz am Anfang der Ausgabe) Keine doppelte Zeile Auftritt.
Lösung hierfür wäre folgende Zeile :
System.out.println();
-->Vor dem else-Befehl.

Ich hoffe ich konnte das Missverständnis hier damit klären und hoffe, dass meine Antwort einigermaßen nachvollziehbar war.
 

Zurück
Oben