// Exercise:  Modify this solution so that each column formats to fit up to a three
//            digit number, thus each numeric position will use four character positions

import java.util.Scanner;

class MultiplicationTable {
  public static void main(String args[]) {
    Scanner scanner = new Scanner(System.in);
    char selection = 'z';
    int number;

    System.out.println();

    while (selection != 'q') {
      System.out.println("(a) Complete Multiplication Table");
      System.out.println("(b) Perfect Square Multiplication Table");
      System.out.println("(q) Quit");
      System.out.print("\nEnter a Selection:  ");

      selection = scanner.next().charAt(0);

      if (selection == 'a') {
        System.out.print("Enter the number of rows/columns in the table:  ");
        number = scanner.nextInt();
        completeMultiplicationTable(number);
      }
      else if (selection == 'b') {
        System.out.print("Enter the number of rows/columns in the table:  ");
        number = scanner.nextInt();
        perfectSquaresMultiplicationTable(number);
      }
    }
    System.out.println("Goodbye.\n");
  }
  public static void completeMultiplicationTable(int number) {
    System.out.println();
    completeMultiplicationTable(number, 0);
    System.out.println();
  }
  public static void completeMultiplicationTable(int number, int row) {
    if (row < number) {
      completeMultiplicationTableColumns(number, row, 0);
      System.out.println();
      completeMultiplicationTable(number, row + 1);
    }
  }
  public static void completeMultiplicationTableColumns(int number, int row, int col) {
    if (col < number) {
      System.out.print(((col + 1) * (row + 1)) + "  ");
      completeMultiplicationTableColumns(number, row, col + 1);
    }
  }
  public static void perfectSquaresMultiplicationTable(int number) {
    System.out.println();
    perfectSquaresMultiplicationTable(number, 0);
    System.out.println();
  }
  public static void perfectSquaresMultiplicationTable(int number, int row) {
    if (row < number) {
      perfectSquaresMultiplicationTableColumns(number, row, 0);
      System.out.println();
      perfectSquaresMultiplicationTable(number, row + 1);
    }
  }
  public static void perfectSquaresMultiplicationTableColumns(int number, int row, int col) {
    if (col < number) {
      if (col == row) {
        System.out.print(((col + 1) * (row +1)) + "  ");
      }
      else {
        System.out.print("   ");
      }
      perfectSquaresMultiplicationTableColumns(number, row, col + 1);
    }
  }
}
