oop-lab3-t2
0leksa
java
a year ago
5.0 kB
5
Indexable
// Standard calculator constructor
abstract class CalcConstr{
abstract public void getSum(double number1, double number2);
abstract public void getDifference(double number1, double number2);
abstract public void getProduct(double number1, double number2);
abstract public void getQuotient(double number1, double number2);
}
//Standard calculator class
class StandardCalc extends CalcConstr{
java.util.Scanner input = new java.util.Scanner(System.in);
public static double number1, number2, result;
public StandardCalc(double number1, double number2){
this.number1 = number1;
this.number2 = number2;
}
@Override
public void getSum(double number1, double number2) {
result = number1 + number2;
System.out.println(result);
}
@Override
public void getDifference(double number1, double number2) {
result = number1 - number2;
System.out.println(result);
}
@Override
public void getProduct(double number1, double number2) {
result = number1 * number2;
System.out.println(result);
}
@Override
public void getQuotient(double number1, double number2) {
result = number1 / number2;
System.out.println(result);
}
}
// Extended calculator constructor
interface ExtCalcConstr {
public void getTan(double number1);
}
// Extended calculator class
class ExtendedCalc implements ExtCalcConstr{
public double number1;
public ExtendedCalc(double number1){
this.number1 = number1;
}
@Override
public void getTan(double number1){
if(number1 == 90.0 || (number1/90.0) % 3 == 0.0){
System.out.println("tan of " + number1 + " is undefined");
}
else {
double result = Math.tan(number1);
System.out.println("tan" + "(" + number1 + ")" + " = " + result);
}
}
}
public class Main {
static java.util.Scanner input = new java.util.Scanner(System.in);
static StandardCalc[] newCalc = new StandardCalc[2];
static int count = 0;
public static void getInstruction(int count){
if (count == 0){
System.out.println("Enter desired operation(addition, subtraction, multiplication, division, tan): ");
}
String operation = input.nextLine();
if(operation.equals("tan")){
try {
calculateTan();
}
catch(Exception e){
System.out.println("Invalid value, please try again");
}
finally {
getInstruction(0);
}
}
else if(operation.equals("addition") || operation.equals("subtraction") || operation.equals("multiplication") || operation.equals("division")){
try {
calculate(operation);
}
catch(Exception e){
System.out.println("Invalid value, please try again");
}
finally {
getInstruction(0);
}
}
else {
getInstruction(1);
}
}
public static void calculate(String operation){
System.out.println("Enter first number: ");
int number1 = input.nextInt();
System.out.println("Enter second number: ");
int number2 = input.nextInt();
if(operation.equals("division") & number2 == 0){
System.out.println("Division by 0 is not allowed");
getInstruction(0);
}
newCalc[0] = new StandardCalc(number1, number2);
switch(operation){
case "addition": newCalc[0].getSum(number1, number2);
break;
case "subtraction": newCalc[0].getDifference(number1, number2);
break;
case "multiplication": newCalc[0].getProduct(number1, number2);
break;
case "division": newCalc[0].getQuotient(number1, number2);
break;
}
getAnswer();
}
public static void calculateTan(){
System.out.println("Enter the number: ");
double number1 = input.nextDouble();
ExtendedCalc newExCalc = new ExtendedCalc(number1);
newExCalc.getTan(number1);
getAnswer();
}
public static void getAnswer(){
System.out.println("Perform another operation?(y/n): ");
char answer = input.next().charAt(0);
if(answer == 'y' || answer == 'Y'){
getInstruction(0);
}
else if(answer == 'n' || answer == 'N'){
System.out.println("Exiting program");
System.exit(0);
}
else{
System.out.println("Invalid answer");
getAnswer();
}
}
public static void main(String[] args) {
getInstruction(0);
}
}Editor is loading...
Leave a Comment