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



## Felge (21. Nov 2011)

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: 


```
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


----------



## c_sidi90 (21. Nov 2011)

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.


----------



## Felge (21. Nov 2011)

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: 


```
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


----------



## Kel (21. Nov 2011)

Felge hat gesagt.:


> 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.


----------



## c_sidi90 (21. Nov 2011)

Der fehler den du bereits in deiner Version behoben hast, ist das der erste Satz doppelt wiederholt wird. Das erfolgt durch die Zeile

```
if(bierAnzahl > 0) {
            System.out.println(bierAnzahl + " " + wort + " Bier im Kühlschrank");
```
 welche  du bereits richtigerweise entfernt hast. Bravo


----------



## thoff430 (21. Nov 2011)

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.


----------



## Fab1 (21. Nov 2011)

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.


----------



## thoff430 (21. Nov 2011)

Ich hab sie eben mal hochgeladen.

Head First Java - Samples.zip (157,73 KB) - uploaded.to


----------



## dev.buzz (7. Mrz 2012)

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! 


```
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]


----------



## IcegodMC (9. Aug 2016)

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.


----------



## VfL_Freak (10. Aug 2016)

Moin,



IcegodMC hat gesagt.:


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


Meinst Du wirklich, dass das nach knapp fünf Jahren noch interessiert ?? 
Bitte keine uralten Themen _just-for-fun_ öffnen  

Gruß Klaus


----------

