Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Program to spell positive 3-digit numberss
- //
- import java.util.*;
- import javax.swing.*;
- public class Assignment4
- {
- public static void main(String[] args)
- {
- String input; //input buffer
- boolean anotherInput = true; //repeat flag
- while ( anotherInput )
- {
- //User enters a 3-digit number, or Cancel to quit
- input = JOptionPane.showInputDialog(null, "Enter a Positive Number, 1 ... 999" +
- "\nOR click on \"Cancel\" to quit" );
- if (input == null) //User hit "Cancel"
- anotherInput = false;
- else //Number entered
- {
- //Parse input as an integer
- int positive = Integer.parseInt( input );
- //Reject integers that are non-positive, or more than 3 digits
- if (positive <= 0 || positive > 999)
- throw new RuntimeException("Invalid input: " + positive);
- //Display the spelling (in words) of the input integer
- String spelling = threeDigitSpelling( positive );
- JOptionPane.showMessageDialog(null, positive + " " + spelling);
- }
- }
- }
- //Return the spelling (in words) of any positive number up to 3 digits
- //Parameter number : any positive whole number 1 ... 999
- private static String threeDigitSpelling(int number)
- {
- //Obtain the individual digits of the number
- int hundreds = decimalDigit(2, number);
- int tens = decimalDigit(1, number);
- int ones = decimalDigit(0, number);
- //The spelling that will be returned
- String words = "";
- //Intrepret the hundreds digit to extend the spelling
- switch (hundreds)
- {
- case 1: words = "one hundred";
- break;
- case 2: words = "two hundred";
- break;
- case 3: words = "three hundred";
- break;
- case 4: words = "four hundred";
- break;
- case 5: words = "five hundred";
- break;
- case 6: words = "six hundred";
- break;
- case 7: words = "seven hundred";
- break;
- case 8: words = "eight hundred";
- break;
- case 9: words = "nine hundred";
- break;
- }
- //Interpret the tens digit to extend the spelling.
- //There are three different cases:
- // a) tens > 1, b) tens == 1, c) tens == 0
- if (tens !=1){
- switch (tens){
- case 2: words = "twenty";
- break;
- case 3: words = "thirty";
- break;
- case 4: words = "forty";
- break;
- case 5: words = "fifty";
- break;
- case 6: words = "sixty";
- break;
- case 7: words = "seventy";
- break;
- case 8: words = "eighty";
- break;
- case 9: words = "ninety";
- break;
- case 0: words = "";
- break;
- }
- }
- else if (tens==1){
- switch (ones){
- case 0: words = "ten";
- break;
- case 1: words = "eleven";
- break;
- case 2: words = "twelve";
- break;
- case 3: words = "thirteen";
- break;
- case 4: words = "fourteen";
- break;
- case 5: words = "fifteen";
- break;
- case 6: words = "sixteen";
- break;
- case 7: words = "seventeen";
- break;
- case 8: words = "eighteen";
- break;
- case 9: words = "nineteen";
- break;
- }
- }
- //Interpret the ones digit to extend the spelling
- switch (ones)
- {
- case 1: words = "one";
- break;
- case 2: words = "two";
- break;
- case 3: words = "three";
- break;
- case 4: words = "four";
- break;
- case 5: words = "five";
- break;
- case 6: words = "six";
- break;
- case 7: words = "seven";
- break;
- case 8: words = "eight";
- break;
- case 9: words = "nine";
- break;
- case 0: words = "";
- break;
- }
- //Return the spelling
- String[] verse = {"Hickory Dickory Dock!",
- "The Mouse Ran Up The Clock!",
- "The Clock Struck One!",
- "The Mouse Ran Down!",
- "Hickory Dickory Dock!" };
- return verse[ (new Random()).nextInt(verse.length) ];
- }
- //Helper method: Returns the ones-word spelling of a single digit
- // Zero, One, Two, ..., Nine
- //Parameter digit : 0 ... 9, identifies the desired ones-word
- private static String onesWord(int digit)
- {switch ( digit )
- {
- case 0: return "zero";
- case 1: return "one";
- case 2: return "two";
- case 3: return "three";
- case 4: return "four";
- case 5: return "five";
- case 6: return "six";
- case 7: return "seven";
- case 8: return "eight";
- case 9: return "nine";
- default: throw new RuntimeException("Non-Digit " + digit);
- }
- }
- //Helper method: Return the teen-word spelling of a single digit
- // Ten, Eleven, Twelve, ..., Nineteen
- //Parameter digit : 0 ... 9, identifies the desired teen-word
- private static String teenWord(int digit)
- {
- return "" + digit;
- }
- //Helper method: Return the tens-word spelling of a single digit
- // Zero, Ten, Twenty, ..., Ninety
- //Parameter digit : 0 ... 9, identifies the desired tens-word
- private static String tensWord(int digit)
- {
- return "tens" + digit;
- }
- //Helper method: Return a digit of any positive integer
- //Parameter index : indexes the desired digit, 0 = least significant
- //Parameter number : the integer whose digit is required
- //Example: decimalDigit(3, 57419) returns 7
- private static int decimalDigit(int index, int number)
- {
- //ALGORITHM:
- //Step 1: Divide number by 10, index times
- //Step 2: Find the remainder of number from Step 1 with 10
- //Step 3: Return the remainder from Step 2
- switch ( index )
- {
- case 2: number /= 10;
- case 1: number /= 10;
- case 0: return number % 10;
- default: return 0;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement