import java.util.InputMismatchException; /** * This is a class implements a Java application that: * <ul> * <li>executes 4 methods, 2 iterative and 2 recursive.</li> * <li>accepts an integer Q on the command line. This integer is the input for * all 4 methods.</li> * <li>if the command line has anything other than a single integer, the * program prints an error message and exit.</li> * <li>if the integer Q is negative or zero, the program exits without printing * anything.</li> * <li>otherwise, executes each of the following four methods: * <ol> * <li>Method 1: use a loop to print a row of Q asterisks.</li> * <li>Method 2: use recursion to print a row of Q asterisks.</li> * <li>Method 3: use a loop to print the numbers Q, Q - 1, ... 3, 2, 1.</li> * <li>Method 4: use recursion to print the numbers Q, Q - 1, ... 3, 2, 1.</li> * </ol> * </li> * </ul> * * @author Cheng Yu * @assignment TA 2 part 2 * @date Aug 29, 2008 * @bugs None */ public class ChengJade01Part2 { /** * The entry point of the application. * * @param args The command line arguments. */ public static void main(final String[] args) { // If the command line has anything other than a single integer, the program // prints an error message and exits. if (args.length != 1) { System.err.println("Wrong number of arguments."); return; } int q = 0; try { q = Integer.parseInt(args[0]); } catch (final NumberFormatException e) { System.err.print("Argument is not an integer."); return; } // If the integer Q is negative or zero, the program exits without printing // anything. if (q <= 0) return; // Call the methods. ChengJade01Part2.printAsterisksWithLoop(q); System.out.println(); ChengJade01Part2.printAsterisksRecursively(q); System.out.println(); ChengJade01Part2.printNumbersWithLoop(q); System.out.println(); ChengJade01Part2.printNumbersRecursively(q); // Exit cleanly while debugging from Eclipse. System.exit(0); } /** * Use recursion to print a row of Q asterisks. * * @param n The number of asterisks to print. */ private static void printAsterisksRecursively(final int n) { assert n > 0; if (n == 1) { System.out.print("*"); return; } System.out.print("* "); ChengJade01Part2.printAsterisksRecursively(n - 1); } /** * Use a loop to print a row of Q asterisks. * * @param n The number of asterisks to print. */ private static void printAsterisksWithLoop(final int n) { assert n > 0; for (int i = 0; i < n - 1; i++) System.out.print("* "); System.out.print("*"); } /** * Use recursion to print the numbers Q, Q - 1, ... 3, 2, 1. * * @param n The number of numbers to print. */ private static void printNumbersRecursively(final int n) { assert n > 0; if (n == 1) { System.out.print(1); return; } System.out.print(n + " "); ChengJade01Part2.printNumbersRecursively(n - 1); } /** * Use a loop to print the numbers Q, Q - 1, ... 3, 2, 1. * * @param n The number of numbers to print. */ private static void printNumbersWithLoop(final int n) { assert n > 0; for (int i = n; i > 1; i--) System.out.print(i + " "); System.out.print(1); } }