aspose file tools*
The moose likes Java in General and the fly likes Beer Song Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Java in General
Bookmark "Beer Song" Watch "Beer Song" New topic
Author

Beer Song

Edicius Rogers
Greenhorn

Joined: Mar 12, 2006
Posts: 2
I have to write a program to display the lyrics to the beer song. I can't get my program to compile and I dont think it has everything it needs either. Thanks for the help. Here are the instructions for the program:

Write a program that outputs the lyrics for "Ninety Nine Bottles of Beer on the Wall". Your program should print the number of bottles in English, not as a number. For example:

Ninety nine bottles of beer on the wall,
Ninety nine bottles of beer,
Take one down, pass it around,
Ninety eight bottles of beer on the wall.

One bottle of beer on the wall,
One bottle of beer,
Take one down, pass it around,
Zero bottles of beer on the wall.

Your program should not use ninety nine different output statements!

Design your program with a class named BeerSong whose constructor takes an integer parameter that is the number of bottles of beer that are initially on the wall. If the parameter is less than zero, set the number of bottles to zero. Similarly, if the parameter is greater than 99, set the number of beer bottles to 99. Then make a public method called printSong that outputs all stanzas from the number of bottles of beer down to zero. Add any additional private methods you find helpful.

In this exercise, you should implement a constructor for the BeerSong class that takes a single parameter of type int that specifies the number of bottles of beer. You should also implement a method named printNumInEnglish that takes a single int parameter specifying a number to be printed (in English) to the console.

Here is my code so far:



Here are my errors:

The method exit(int) in the type System is not applicable for the arguments ()
The method printNumInEnglish() in the type BeerSong is not applicable for the arguments (int)
The method printNumInEnglish() in the type BeerSong is not applicable for the arguments (int)
The method printNumInEnglish() in the type BeerSong is not applicable for the arguments (int)
Jeremy Tartaglia
Ranch Hand

Joined: Mar 11, 2004
Posts: 62
Your compilation errors are simple typos:

System.exit(int x) requires an error code to be passed. System.exit(void) doesn't exist. So just add a parameter to System.exit(). I use 0 frequently, though other numbers should work equally well.

Your function printNumInEnglish() doesn't take a parameter, but you pass a parameter to it three times. You'll have to iron this out on your own, in the best interest of your program.

That should get it to compile.
Edicius Rogers
Greenhorn

Joined: Mar 12, 2006
Posts: 2
Thanks so much for helping. I got all my errors fixed and when I compile and run it, it just loops: (see below) 99 times

Ninety Nine bottle of beer on the wall,
Ninety Nine bottle of beer,
Take one down, pass it around,
Ninety Nine bottles of beer on the wall.

To fix my errors, I added a zero: System.exit(0); and I took the n out of: printNumInEnglish(n)
Jeremy Tartaglia
Ranch Hand

Joined: Mar 11, 2004
Posts: 62
Well, look at what it's doing. You have a for loop in which a new variable (num) is defined. But printNumInEnglish is using your static bottles variable, which is never altered. You need to change that value, or you need to modify your code so that printNumInEnglish uses a parameter passed to it.
Joanne Neal
Rancher

Joined: Aug 05, 2005
Posts: 3739
    
  16
And if you read the specification you will see that Jeremy's second suggestion is the way to go
You should also implement a method named printNumInEnglish that takes a single int parameter specifying a number to be printed (in English) to the console.


Joanne
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Beer Song