Ü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
 

c_sidi90

Top Contributor
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

Mitglied
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
 

Kel

Aktives Mitglied
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

Top Contributor
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 :D
 

thoff430

Mitglied
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

Top Contributor
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.:oops: Kannst ja mal googeln evtl. hast du mehr glück.
 

dev.buzz

Mitglied
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! :oops:[/OT]
 

IcegodMC

Neues Mitglied
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.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Übung Zahlworte Java Basics - Anfänger-Themen 14
M Array - Übung Java Basics - Anfänger-Themen 3
Der Grütz Verständnisfrage zu Übung aus Java Kurs - Schaltjahr bestimmen Java Basics - Anfänger-Themen 2
A Vererbung Vererbung Übung Java Basics - Anfänger-Themen 5
Kawastori Hilfe bei Methoden Übung Java Basics - Anfänger-Themen 6
T OOP Klausur-Übung Öpnv Java Basics - Anfänger-Themen 17
A Übung Else if Java Basics - Anfänger-Themen 2
M Code nur für Cracks? Crack the Passwort Übung Java Basics - Anfänger-Themen 7
parrot Array Übung Java Basics - Anfänger-Themen 25
T Programmierwettbewerb Übung Java Basics - Anfänger-Themen 73
G "Ladebalken" erstellen - Übung Java Basics - Anfänger-Themen 3
M JavaFX-Übung Autospiel Java Basics - Anfänger-Themen 4
B ShuttleBus - Übung Java Basics - Anfänger-Themen 3
Zrebna Compiler-Fehler Java-Compiler wird nach 'javac' keyword-Eingabe nicht gestartet (Erste Übung) Java Basics - Anfänger-Themen 18
B Rekursion - Übung Java Basics - Anfänger-Themen 2
T Klassen Kleine Übung zum Thema Klassen Java Basics - Anfänger-Themen 3
D Übung Felder java Error kompilieren Java Basics - Anfänger-Themen 4
F Erste Schritte Hilfe bei Übung zu String equals() und Schleifen Java Basics - Anfänger-Themen 8
M Übung Ausgabewerte kapier ich nicht ... Java Basics - Anfänger-Themen 1
D Übung zur Klausuraufgabe Java Basics - Anfänger-Themen 18
D OOP Hilfe zu Übung Laufzeitberechnung in Big O Java Basics - Anfänger-Themen 2
F Erste Schritte Übung zu Exceptions Java Basics - Anfänger-Themen 24
F Problem mit selbstprogrammierten Kalender (als Übung) Java Basics - Anfänger-Themen 4
B GUI- JTextField - Übung Java Basics - Anfänger-Themen 5
A Vererbung Verständnisproblem bei Übung Java Basics - Anfänger-Themen 5
EnHancEd[] OOP-Übung Java Basics - Anfänger-Themen 18
EnHancEd[] Exception Übung für Einsteiger Java Basics - Anfänger-Themen 14
T Methoden Array Übung Java Basics - Anfänger-Themen 7
F Übung: Ratespiel aus dem Buch Java von Kopf bis Fuß Java Basics - Anfänger-Themen 14
Dit_ Thread Synchronisation | Übung Java Basics - Anfänger-Themen 5
K Anfänger-Übung für Arrays Java Basics - Anfänger-Themen 2
C Java Übung Fragen Java Basics - Anfänger-Themen 3
E BlueJ und Zeichenketten. S83 Übung 2.72 Java Basics - Anfänger-Themen 3
F Upper Case Übung Java Basics - Anfänger-Themen 10
G Frage zu einer Übung Java Basics - Anfänger-Themen 11
A JSP - Probleme mit einer Übung Java Basics - Anfänger-Themen 3
G Problem mit Übung Java Basics - Anfänger-Themen 5
D Problem mit objektorientierter Übung Java Basics - Anfänger-Themen 2
A Java Übung Java Basics - Anfänger-Themen 14
C Bitte Hilfe bei Übung zu Verzweigungen Java Basics - Anfänger-Themen 16
L Flaschen auf Kästen verteilen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben