Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

you will be implementing a text-based postfix calculator which takes input in postfix notation and displays the results of the computation. Write two classes OperationTest

you will be implementing a text-based postfix calculator which takes input in postfix notation and displays the results of the computation. Write two classes OperationTest and CalculatorMemoryTest that have JUnit tests that test all of the public methods of those two classes. Here are the classes. Fix any bigs you find. write JUnit test for these 2 classes
public class Operation {
public static int performOperation (char op, int left, int right) {
int result = 0;
if (op == '+')
result = left + right;
else if (op == '-')
result = right - left;
else if (op == '*')
result = left * right;
else if (op == '/') {
try {
result = left / right;
} catch (Exception e) {
System.out.println("Divide by Zero error ");
}
}
else
throw new IllegalArgumentException();
return result;
}
}
public class CalculatorMemory {
private int arr [];
private int top;
private int MAX = 1000;
public void CaculatorMemory () {
arr = new int [MAX];
top = - 1;
}
public void push (int number) throws Exception {
if (top == MAX - 1)
throw new Exception ("Stack Overflow");
top++;
arr[top] = number;
}
public int pop () throws Exception {
if (isEmpty())
throw new Exception ("Stack underflow");
int num = arr[top];
top--;
return num;
}
public boolean isEmpty () {
return top == -1;
}
public int size () {
return top + 1;
}
public void clear () {
top = -1;
}
public String toString() {
String str = "Memory contents: ";
for (int i = top; i >= 0; i--)
str+= arr[i] + " ";
str+= "--- ";
return str;
}
}
Here is also a method where calculator runs, you dont need to write JUnit tests but in case you want to test it in Eclipse.
package calculator;
import java.util.Scanner;
public class Calculator {
private CalculatorMemory calc;
private Scanner sc;
public Calculator() {
calc = new CalculatorMemory();
sc = new Scanner (System.in);
}
public void run () throws Exception {
String str;
System.out.println("Enter a number or operator: ");
str = sc.nextLine();
int number, left, right;
if (str.equals("+") || str.equals ("-") || str.equals("*") || str.equals("/")) {
right = calc.pop();
left = calc.pop();
number = Operation.performOperation(str.charAt(0), left, right);
calc.push(number);
} else {
try {
number = Integer.parseInt(str);
calc.push(number);
} catch (Exception E) {
System.out.println("Invalid input");
}
}
System.out.println(calc);
}
public static void main (String [] args) throws Exception {
Calculator calculator = new Calculator();
while (true) {
calculator.run();
}
}
}

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image_step_2

Step: 3

blur-text-image_step3

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Students also viewed these Databases questions