// Calculator-JML program by Pushkar Ogale
// CS 5374 Fall 2013
// NOTE: Added as a test case because it crashed (with RAC) under 12/12 release
import java.io.*;
import java.util.*;
import java.math.*;
//import java.lang.*;
public class MainActivity {
public static double Res=0; //Global Result variable
public static double ResS=0; //Global Result variable
public static double ResM=0; //Global Result variable
public static double ResSu=0; //Global Result variable
public static double ResD=0; //Global Result variable
public static double ResH=0; //Global Result variable
public static double ResP=0; //Global Result variable
double I1, I2, result;
//Thread to process Sum
//@ requires I1 >= 0 && I2>=0;
//@ ensures \result > 0.0;
public static double SumThread(double I1, double I2)
{
if ((I1>0) && (I2>0))
ResS=I1+I2;
else
ResS=0;
return(ResS);
}
//Thread to process Division
//@ requires I2 > 0;
//@ ensures \result < 0;
public static double DivThread(double I1, double I2)
{
ResD=I1/I2;
return(ResD);
}
//Thread to process Subtract
//@ requires I1 > I2;
//@ ensures \result > 0;
public static double DiffThread(double I1, double I2)
{
if (I1 > I2)
ResSu=I1-I2;
else
ResSu=0;
return(ResSu);
}
//Thread to process Multiplication
//@ requires I1 > 0 && I2 > 0;
//@ ensures \result >0;
public static double MultThread(double I1, double I2)
{
if ((I1>0) && (I2>0))
ResM=I1*I2;
else
ResM=0;
return(ResM);
}
//@ requires I1 > 0 && I2 > 0;
//@ ensures \result > 0;
public static double HypotThread(double I1, double I2)
{
if ((I1>0) && (I2>0))
ResH=Math.sqrt(Math.pow(I1,2)+Math.pow(I2,2));
else
ResH = 0;
//@ ensures \result > 0;
return(ResH);
}
//@ requires I1 > 0 && I2 >= 0 ;
//@ ensures \result >0;
public static double PowThread(double I1, double I2)
{
if ((I1>0) && (I2>0))
ResP=Math.pow(I1,I2);
else
ResP = 0;
return(ResP);
}
public static void main(String [] args) throws IOException {
boolean loopcheck=true;
boolean loopcheck2=true;
double iet1=0,iet2=0;
String s;
char c;
BufferedReader stdin=new BufferedReader (new InputStreamReader (System.in));
Scanner stdin2 = new Scanner(System.in);
while (loopcheck==true)
{
System.out.println();
System.out.print("Enter Number1: ");
// Read user input
iet1=stdin2.nextDouble();
System.out.println();
System.out.print("Enter Number2: ");
iet2=stdin2.nextDouble();
System.out.println();
while (loopcheck2 == true)
{
System.out.println("\t Enter your choice of operation on the 2 numbers: \n\n"
+"\t A to ADD:\n"
+"\t S to Subtract: \n"
+"\t M to Multiply: \n"
+"\t D to Divide: \n"
+"\t H for Hypotenuse: \n"
+"\t P for Power function: \n"
+"\t or Q to quit: \n");
System.out.println();
// Read user input code
s=stdin.readLine();//.charAt(0);
System.out.flush();
if (s.length() == 0) {
System.out.println("Exiting, you hit Enter");
System.exit(0);
}
c=s.charAt(0);
//System.out.println("User input is : "+c); //Debug statement
//
switch(c)
{
case 'A':
{
Res= SumThread(iet1,iet2);
System.out.println("Sum is: " + Res);
System.out.println();
break;
}
case 'M':
{
Res = MultThread(iet1,iet2);
System.out.println("Product is: " + Res);
System.out.println();
break;
}
case 'S':
{
Res= DiffThread(iet1,iet2);
System.out.println("Difference is: " + Res);
System.out.println();
break;
}
case 'D':
{
Res=DivThread(iet1,iet2);
System.out.println("Quotient is: " + Res);
System.out.println();
break;
}
case 'H':
{
Res=HypotThread(iet1,iet2);
System.out.println("Hypotenuse is: " + Res);
System.out.println();
break;
}
case 'P':
{
Res=PowThread(iet1,iet2);
System.out.println("Power Result is: " + Res);
System.out.println();
break;
}
case 'Q':
{
System.out.println("Quitting");
System.out.println();
loopcheck2=false;
loopcheck=false;
break;
}
default:
{
System.out.println("Invalid Choice Try Again");
System.out.println();
break;
}
}
}
}
return;
}
}