public class calculatorCalculations { private double totalNum = 0d; private double regA = 0d, regB = 0d; //Temporary registers for percentage or double operations private boolean blank = true; //If no values have been previously stored public void calculatorCalculations () { } public double getTotalNum () { return totalNum; } public String toString () { return Double.toString(totalNum); } public boolean isBlank () { return blank; } public void reset () { totalNum = regA = regB = 0d; blank = true; } public void performPercentCalculation (char operation) //After a percent has been used, pressing equals button calls this { totalNum = regA; totalNum = performCalculation((regA / 100) * regB, operation); } public void performNormalCalculation (double secondNum, char operation) //Standard operations { totalNum = performCalculation(secondNum, operation); } public void performSpecialCalculation (double currentNumber, char operation) { if (blank) { totalNum = currentNumber; totalNum = performCalculation(0, operation); } else { regA = totalNum; totalNum = currentNumber; totalNum = regA + performCalculation(0, operation); } } private double performCalculation (double secondNum, char operation) { blank = false; switch (operation) { case '+': return totalNum + secondNum; case '-': return totalNum - secondNum; case '*': return totalNum * secondNum; case '/': return division(secondNum); case '^': return square(); case 'v': return squareRoot(); case '%': return percentage(secondNum); default : return totalNum; } } private double division (double secondNum) { if (totalNum == 0D || secondNum == 0D) //Prevents dividing by zero { return 0D; } return totalNum / secondNum; } private double square () { return totalNum * totalNum; } private double squareRoot () { return Math.sqrt(totalNum); } private double percentage (double secondNum) { regA = totalNum; regB = secondNum; return (totalNum / 100) * secondNum; } }