// Calculator.java program designed to use Java Swing OptionPane R.Metcalfe July 2013 import javax.swing.JOptionPane; import java.io.*; // Begin class Calculator public class Calculator { // Define main method public static void main( String args[] ) { // Declaring string variables String numberOne, numberTwo, x, choices = "+-*/^!"; int pos = 0; // Declaring variables as type double double fnumber1, fnumber2, fresult; // Using a do while statement as loop do { // Read Calculator Action from user as a string x = JOptionPane.showInputDialog( "Enter Calculator Action out of +-*/^! or " + "type anything else to exit : " ); if (x != null) { pos = -1; if (x.length() > 0) pos = choices.indexOf(x.substring(0,1)); switch (pos) { case 5: case 0: case 1: case 2: case 3: case 4: // Read in first number from user as string numberOne = JOptionPane.showInputDialog( "Enter number : "); // Convert number from type string to type double fnumber1 = Double.parseDouble( numberOne ); if (x.substring(0,1).equals("!") && fnumber1 >= 1.0) { fresult = fnumber2 = 1.0; while (fnumber2 < fnumber1) { fnumber2 += 1.0; if (fnumber2 > fnumber1) fnumber2 = fnumber1; fresult *= fnumber2; } JOptionPane.showMessageDialog( null, numberOne + "! = " + fresult, "Calculator Result", JOptionPane.PLAIN_MESSAGE ); } else { // Read in first number from user as string numberTwo = JOptionPane.showInputDialog( "Enter second number : " ); // Convert number from type string to type double fnumber2 = Double.parseDouble( numberTwo ); if (x.substring(0,1).equals("+")) { JOptionPane.showMessageDialog( null, numberOne + " + " + numberTwo + " = " + (fnumber1 + fnumber2), "Calculator Result", JOptionPane.PLAIN_MESSAGE ); } else if (x.substring(0,1).equals("-")) { JOptionPane.showMessageDialog( null, numberOne + " - " + numberTwo + " = " + (fnumber1 - fnumber2), "Calculator Result", JOptionPane.PLAIN_MESSAGE ); } else if (x.substring(0,1).equals("*")) { JOptionPane.showMessageDialog( null, numberOne + " * " + numberTwo + " = " + (fnumber1 * fnumber2), "Calculator Result", JOptionPane.PLAIN_MESSAGE ); } else if (x.substring(0,1).equals("/")) { JOptionPane.showMessageDialog( null, numberOne + " / " + numberTwo + " = " + (fnumber1 / fnumber2), "Calculator Result", JOptionPane.PLAIN_MESSAGE ); } else if (x.substring(0,1).equals("^")) { JOptionPane.showMessageDialog( null, numberOne + " ^ " + numberTwo + " = " + Math.pow(fnumber1, fnumber2), "Calculator Result", JOptionPane.PLAIN_MESSAGE ); } } break; default: x = "stop"; break; } } else { x = "stop"; } // ... until forced exit } while( ! x.equals( "stop" )); // Ends program System.exit(0); } }