As you suggested, there are several approaches to this assignment. I am still working on my third submission, and will probably have more. Paul Wheaton made a good suggestion in another message that really helped me.
For some cattle drive folks I add the requirement that I want them to make a method that introduces some abstraction. The method will take and integer and the value must be in the range of 0 to 999. It will then "say" that value.
If you have such a method, writing your main becomes much easier. From within this new method, your task becomes much easier. The whole program falls together.
He's right, once you have done this the program seems to be much easier to write and you can easily add other methods to handle the larger numbers.
One other side note, don't forget about negative numbers!