public class ImprovedDigits2 { public static void main(String args[]){ // print the digits of a number int x = 6002; // first find the number of digits int z = x; int num_digits; for(num_digits = 0; z != 0; z /= 10, num_digits++); System.out.println("The number of digits in "+x+" are "+num_digits+"."); System.out.print(x+" = "); z = x; for(int i = num_digits-1; i >= 0; i--){ int div = 1; for(int j = 0; j < i; j++) div *= 10; //The change in logic is in from this: //printDigit(z/div); //to: if(div >= 100 && z/div != 0){ printDigit(z/div); printOrder(div); }else if(z >= 20){ printSecond(z/div); }else{ printTeens(z); break; } //this. z %= div; } System.out.println("."); } static void printOrder(int x){ if(x == 1000) System.out.print("thousand "); else if(x == 100) System.out.print("hundred "); else System.out.print("* "); } static void printTeens(int x){ if(x < 10){ printDigit(x); return; } switch(x){ case 10: System.out.print("ten "); break; case 11: System.out.print("eleven "); break; case 12: System.out.print("twelve "); break; case 13: System.out.print("thirteen "); break; case 14: System.out.print("fourteen "); break; case 15: System.out.print("fifteen "); break; case 16: System.out.print("sixteen "); break; case 17: System.out.print("seventeen "); break; case 18: System.out.print("eighteen "); break; case 19: System.out.print("nineteen "); break; default: System.out.print("* "); } } static void printSecond(int x){ switch(x){ case 0: //System.out.print("zero "); break; case 1: System.out.print("* "); break; case 2: System.out.print("twenty "); break; case 3: System.out.print("thirty "); break; case 4: System.out.print("forty "); break; case 5: System.out.print("fifty "); break; case 6: System.out.print("sixty "); break; case 7: System.out.print("seventy "); break; case 8: System.out.print("eighty "); break; case 9: System.out.print("ninety "); break; default: System.out.print("* "); } } static void printDigit(int x){ switch(x){ case 0: //System.out.print("zero "); break; case 1: System.out.print("one "); break; case 2: System.out.print("two "); break; case 3: System.out.print("three "); break; case 4: System.out.print("four "); break; case 5: System.out.print("five "); break; case 6: System.out.print("six "); break; case 7: System.out.print("seven "); break; case 8: System.out.print("eight "); break; case 9: System.out.print("nine "); break; default: System.out.print("* "); } } }