Sun Java Solaris Communities My SDN Account Join SDN
 
Tutorials & Code Camps

Java Technology Fundamentals Solution

 

New-to-Java Programming Center
Technology Fundamentals

For May's challenge, create a program that examines each character from a command line argument.

Create a program that examines each character from a command line argument.

  • Use the static methods of class Character to report on the type of each character.
  • Check if each character is a digit, letter, or whitespace.
  • Report the specific type.

A possible solution to the May 2002 Java Technology Fundamentals Program Challenge, Examine:

public class Examine {
   public static void main(String args[]) {
     // check if word passed in
     if (args.length != 1) {
       System.err.println(
         "Please pass in a word to check");
       System.exit(-1);
     }
     // get word
     String word = args[0];
     // loop for each character
     for (int i=0, n=word.length(); i<n; i++) {
       checkChar(word.charAt(i));
     }
   }
   // report status of character
   private static void checkChar(char c) {
     // display character
     System.out.println("Char: " + c);
     // check if digit
     System.out.println("\tisDigit:\t" +
       Character.isDigit(c));
     // check if letter
     System.out.println("\tisLetter:\t" +
       Character.isLetter(c));
     // check if whitespace
     System.out.println("\tisWhitespace:\t" +
       Character.isWhitespace(c));
     // report type
     System.out.print("\tType:\t\t");
     String message = null;
     switch (Character.getType(c)) {
       case Character.COMBINING_SPACING_MARK:
         message = "Combining Spacing Mark";
         break;
       case Character.CONNECTOR_PUNCTUATION:
         message = "Connector Punctuation";
         break;
       case Character.CONTROL:
         message = "Control";
         break;
       case Character.CURRENCY_SYMBOL:
         message = "Currency Symbol";
         break;
       case Character.DASH_PUNCTUATION:
         message = "Dash Punctuation";
         break;
       case Character.DECIMAL_DIGIT_NUMBER:
         message = "Decimal Digit Number";
         break;
       case Character.ENCLOSING_MARK:
         message = "Enclosing Mark";
         break;
       case Character.END_PUNCTUATION:
         message = "End Punctuation";
         break;
       case Character.FINAL_QUOTE_PUNCTUATION:
         message = "Final Quote Punctuation";
         break;
       case Character.FORMAT:
         message = "Format";
         break;
       case Character.INITIAL_QUOTE_PUNCTUATION:
         message = "Initial Quote Punctuation";
         break;
       case Character.LETTER_NUMBER:
         message = "Letter Number";
         break;
       case Character.LINE_SEPARATOR:
         message = "Line Separator";
         break;
       case Character.LOWERCASE_LETTER:
         message = "Lowercase Letter";
         break;
       case Character.MATH_SYMBOL:
         message = "Math Symbol";
         break;
       case Character.MODIFIER_LETTER:
         message = "Modifier Letter";
         break;
       case Character.MODIFIER_SYMBOL:
         message = "Modifier Symbol";
         break;
       case Character.NON_SPACING_MARK:
         message = "Non Spacing Mark";
         break;
       case Character.OTHER_LETTER:
         message = "Other Letter";
         break;
       case Character.OTHER_NUMBER:
         message = "Other Number";
         break;
       case Character.OTHER_PUNCTUATION:
         message = "Other Punctuation";
         break;
       case Character.OTHER_SYMBOL:
         message = "Other Symbol";
         break;
       case Character.PARAGRAPH_SEPARATOR:
         message = "Paragraph Separator";
         break;
       case Character.PRIVATE_USE:
         message = "Private Use";
         break;
       case Character.SPACE_SEPARATOR:
         message = "Space Separator";
         break;
       case Character.START_PUNCTUATION:
         message = "Start Punctuation";
         break;
       case Character.SURROGATE:
         message = "Surrogate";
         break;
       case Character.TITLECASE_LETTER:
         message = "Titlecase Letter";
         break;
       case Character.UNASSIGNED:
         message = "Unassigned";
         break;
       case Character.UPPERCASE_LETTER:
         message = "Uppercase Letter";
         break;
       default:
         message = "Unknown";
     }
     // display type
     System.out.println(message);
   }
}

Produces the following:

%java Examine word
Char: w
        isDigit:        false
        isLetter:       true
        isWhitespace:   false
        Type:           Lowercase Letter
Char: o
        isDigit:        false
        isLetter:       true
        isWhitespace:   false
        Type:           Lowercase Letter
Char: r
        isDigit:        false
        isLetter:       true
        isWhitespace:   false
        Type:           Lowercase Letter
Char: d
        isDigit:        false
        isLetter:       true
        isWhitespace:   false
        Type:           Lowercase Letter

Have a question about programming? Use Java Online Support.