oop-lab3-t2

 avatar
0leksa
java
5 months ago
5.0 kB
3
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