/************************************************************************************************** * Program Name: Programming Project 4.6: Multiplication Table * Author: Terry Weiss * Date Written: September 25, 2015 * Course/Section: CSC 111-003W * Program Description: * Design and implement an application that produces an arithmetic table, showing the * results of a user-specified operation on the integers 1 through a user-defined maximum. * * Edit: Removed requiring a space in `operator` in `makeTable()` and formatted it in instead. **************************************************************************************************/ import java.util.Scanner; public class ArithmeticTable2 { public static String makeTable( String operator, int highestFactor ) { int column, row, value; String table = ""; // Print the header row table += String.format(" %s\t", operator); for (column = 1; column <= highestFactor; column++) { table += String.format("%3d\t", column); } table += "\n"; // Print table for (row = 1; row <= highestFactor; row++ ) { table += String.format("%2d|\t", row); // Display row number for (column = 1; column <= highestFactor; column++) { if (operator.equals("x")) { value = row * column; } else if (operator.equals("+")) { value = row + column; } else if (operator.equals("-")) { value = row - column; } else // unsupported operation { value = 0; } table += String.format("%3d\t", value); } table += "\n"; } return table; } public static void main( String[] args ) { String[] operatorList = { "+", "-", "x" }; String[] operation = { "add", "subtract", "multiply" }; final int MIN_FACTOR = 1, MAX_FACTOR = 20; String number, choice; int highestFactor, menuChoice; Scanner user_input = new Scanner(System.in); do { System.out.print( "\t1. Addition\n" + "\t2. Subtraction\n" + "\t3. Multiplication\n" + "Please enter which table you'd like to make: "); choice = user_input.next(); try { menuChoice = Integer.parseInt(choice); } catch (NumberFormatException e) { System.out.println("That's not a number!"); menuChoice = -1; } } while (menuChoice < 1 || menuChoice > 3); do { System.out.print("Please enter how high you'd like to " + operation[menuChoice - 1] + " (up to 20): "); number = user_input.next(); try { highestFactor = Integer.parseInt(number); } catch (NumberFormatException e) { System.out.print("That's not a number! "); highestFactor = -1; } } while (highestFactor < MIN_FACTOR || highestFactor > MAX_FACTOR); System.out.println(makeTable(operatorList[menuChoice - 1], highestFactor)); } }