Java Reference
In-Depth Information
then trying to compile it and debug it. Waiting to compile until the program is
done may mean seeing dozens (literally) of syntactic error messages, which can
be overwhelming. Also, if we test only when we believe the program is finished,
we have no idea how to go about it. Finished programs are possibly thousands
of lines long. There will be too much to test all at once, too many places that
might have errors. Programming, commenting, compiling, and testing incre-
mentally lends a great deal of control —and will your preserve sanity at 3am the
day your assignment is due.
Anglicizing integers
We write a function that anglicizes integers, producing their English equiv-
alents. For example, for the integer 2001 , our function produces the String "two
thousand one" . We start with a specification and a function heading:
/** = English equivalent of n , for 0<n<1,000,000 */
public static String anglicize( int n)
For small numbers like 2 and 5 , the English equivalent is easy to get; the
larger the number, the more work it takes to get its English equivalent. Because
of this we investigate large numbers, just to see what the problems are. The value
1000 is a point of differentiation: if n ≥ 1000 the result has the word "thousand"
in it; if n < 1000 , it does not. Thus we can make an educated guess that the first
step of the body of anglicize is to make this differentiation:
/** = English equivalent of n , for 0<n<1,000,000 */
public static String anglicize( int n) {
if (n >= 1000) {
return anglicized n ( for 1000 <= n < 1000000);
} else {
return anglicized n ( for n <= 1000);
Refining the expression “anglicized n (for n > = 1000)”
Anglicizing an integer n in the range 1000 ≤ n < 1000000 requires breaking
it into the parts n / 1000 and n % 1000 , anglicizing the two parts, and placing "
thousand " between them. For example, the English equivalent of 2121 is the
word for 2121 / 1000 followed by " thousand " followed by the anglicization
of 2121 % 1000 . We can therefore write the then-part of the if-statement as
return ( anglicized ( n/1000))
+ " thousand " + ( anglicized ( n % 1000))
This return statement calls for anglicizing two integers that are less than
1000 , and the else-part also calls for anglicizing an integer that is less than 1000 .
Therefore, in three places we have to do essentially the same task. It makes sense
Search WWH ::

Custom Search