import java.util.InputMismatchException; import java.util.Scanner; /** * This class implements a Java application that: * <ul> * <li>declares a Scanner variable.</li> * <li>declares an array of 26 String values, and initializes each array * element with the corresponding lower case letter of the alphabet.</li> * <li>prompts the user to enter an integer and uses the Scanner's nextInt * method to obtain that integer from the user.</li> * <li>prints out the corresponding letter from the array.</li> * <li>creates a new array of size 27, puts a string containing a space (" ") * at index 0 in the new array, and copies all the other letters to positions * 1..26 of the new array using System.arraycopy().</li> * <li>loops through the array, printing each entry, either as is, or upper * case if it is a vowel ("a", "e", "i", "o", "u").</li> * <li>prints the number of non-vowel strings at the end of the loop.</li> * <li>the program catches the InputMismatchException from the call to nextInt, * in which case the program must display an appropriate error message and end * the program.</li> * <li>the loop works for any size initial array, and not depend on the array * size.</li> * </ul> * * @author Cheng Yu * @assignment TA 1 part 1 * @date Aug 29, 2008 * @bugs None */ public class ChengJade01Part1 { /** * The entry point of the application. * * @param args The command line arguments (not used). */ public static void main(final String[] args) { // Declare a Scanner variable. final Scanner scanner = new Scanner(System.in); // Declare an array of of 26 String values, and initializes each array // element with the corresponding lower case letter of the alphabet. final String[] array = new String[] { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" }; // Prompt the user to enter an integer and use the Scanner's nextInt // method to obtain that integer from the user. int input = 0; System.out.print("Please type an integer (0 to 25): "); // Catch the InputMismatchException from the call to nextInt, // in which case display an appropriate error message and // end the program. try { input = scanner.nextInt(); System.out.println(array[input]); } catch (final InputMismatchException e) { System.err.println("Input mismatch error."); return; } catch (final ArrayIndexOutOfBoundsException e) { System.err.println("too large."); } // Check to see if the input index is too large. if (input >= array.length) System.err.println("The index is too large."); // Print out the corresponding letter from the array. // else // System.out.println(array[input]); // Create a new array of size 27, put a string containing a space (" ") at // index 0 in the new array, and copy all the other letters to positions // 1..26 of the new array using System.arraycopy(). final String[] newArray = new String[27]; newArray[0] = " "; System.arraycopy(array, 0, newArray, 1, 26); // Loop through the array, print each entry, either as is, or upper // case if it is a vowel ("a", "e", "i", "o", "u"). int consonants = 0; for (int i = 0; i < newArray.length; i++) { if ("aeiou".indexOf(newArray[i]) >= 0) { System.out.print(newArray[i].toUpperCase()); continue; } // NOTE: This is an alternative way to check for a vowel: // // if (newArray[i].equals("a") || // newArray[i].equals("e") || // newArray[i].equals("i") || // newArray[i].equals("o") || // newArray[i].equals("u")) { // System.out.print(newArray[i].toUpperCase()); // continue; // } System.out.print(newArray[i]); consonants++; } // Print the number of non-vowel strings at the end of the loop. System.out.println("\nNumber of consonants: " + consonants); // Exit cleanly while debugging from Eclipse. System.exit(0); } }