Создание калькулятора, вызывающего методы из отдельного класса с помощью сканера - PullRequest
0 голосов
/ 01 августа 2020

Я создаю калькулятор, в котором каждая из функций калькулятора должна быть в отдельном классе и вызываться из основного метода с использованием входных данных сканера.

1. Добавить

3. Умножение

4. Деление

5. Квадрат

6. Мощность

7. Режим работы

8.Factorial

0.Quit

Я должен создать каждый метод, вызываемый объектом. Для калькулятора требуется один основной класс (с методом main ()) и один определенный пользователем класс, который имеет указанные выше методы расчета. Программа должна позволять пользователю выбирать операцию (одно из приведенных выше вычислений) и операнды (числа). Некоторые вычисления требуют двух операндов. (например, A + B, AB) Некоторые вычисления требуют одного операнда. (например, A2, N!) Дополнительные функции:

• Позвольте функции вычислений продолжаться до тех пор, пока пользователь не захочет выйти из этой программы.

• Когда одно вычисление выполнено, позвольте пользователю выбрать другую операцию.

• Эта программа завершается, когда пользователь выбирает опцию END.

• Выполнять все операции. Не используйте математические методы библиотеки Java.

У меня есть код программы, использующей оператор switch и регистр, но наш класс даже не узнал ничего из этого. Я искал повсюду в Интернете в течение последних двух дней и просто не могу понять этого, поэтому извиняюсь, если решение простое, и заранее спасибо всем за помощь. Вот код моей программы на данный момент.

public static void main(String[] args) {
     
    Scanner s = new Scanner(System.in);
    int choice;
    do
    {
        System.out.println("[1] Add ");
        System.out.println("[2] Subtract ");
        System.out.println("[3] Multiply ");
        System.out.println("[4] Division ");
        System.out.println("[5] Square ");
        System.out.println("[6] Power ");
        System.out.println("[7] Mod Operation ");
        System.out.println("[8] Factorial ");

        System.out.println("[0] Quit ");

        System.out.println("Please enter your choice: ");       
        choice = s.nextInt();
        int num1, num2;
        
        switch(choice)
        {
            case 1 : System.out.println("Enter two numbers to add: ");
                 num1 = s.nextInt();
                 num2 = s.nextInt();
                 System.out.println("The sum of " + num1 + " and " + num2 + 
                         " is: " + add(num1, num2));
                 break;

            case 2 : System.out.println("Enter two numbers to subtract: ");
                 num1 = s.nextInt();
                 num2 = s.nextInt();
                 System.out.println("The difference of " + num1 + " and " + num2 + 
                         " is: " + diff(num1, num2));
                 break;

            case 3 : System.out.println("Enter two numbers to multiply: ");
                 num1 = s.nextInt();
                 num2 = s.nextInt();
                 System.out.println("The product of " + num1 + " and " + num2 + 
                         " is: " + prod(num1, num2));
                 break;

            case 4 : System.out.println("Enter two numbers to divide: ");
                 num1 = s.nextInt();
                 num2 = s.nextInt();
                 System.out.println("The quotient of " + num1 + " and " + num2 + 
                         " is: " + quo(num1, num2));
                 break;

            case 5 : System.out.println("A number to square: ");
                 num1 = s.nextInt();
                 System.out.println("The square of " + num1 + " is: " + square(num1));
                 break;

            case 6 : System.out.println("Enter the base and the exponent: ");
                 num1 = s.nextInt();
                 num2 = s.nextInt();
                 System.out.println("The power of " + num1 + " to the " + num2 + 
                         "th power is: " + power(num1, num2));
                 break;

            case 7 : System.out.println("Enter two numbers to get the interger remainder of (modulo): ");
                 num1 = s.nextInt();
                 num2 = s.nextInt();
                 System.out.println("The modulo of " + num1 + " and " + num2 + 
                         " is: " + mod(num1, num2));
                 break;
        
            case 8 : System.out.println("Enter a number to get the factorial of: ");
                 num1 = s.nextInt();
                 System.out.println("The factorial of " + num1 + " is: " + factorial(num1));
                 break;
        
            case 0: System.out.println("Thank you for using my program...good bye!");
                System.exit(0);
        }
    }
    while(choice != 0);
    s.close();
}


public static int add(int num1, int num2)
{
    return num1 + num2;
}

public static int diff(int num1, int num2)
{
    return num1 - num2;
}

public static int prod(int num1, int num2)
{
    return num1 * num2;
}

public static double quo(int num1, int num2)
{
    return (double)num1 / num2;
}

public static int mod(int num1, int num2)
{
    return num1 % num2;
}

public static long power(int base, int exp)
{
        long result = 1;

        while (exp != 0)
        {
                result *= base;
                --exp;
        }
    return result;
}

public static int square(int num)
{
    return num * num;
}

public static int factorial(int base)
{
    if (base == 0)    
            return 1;    
    else    
            return(base * factorial(base - 1));     
}

}

Ответы [ 2 ]

1 голос
/ 01 августа 2020

Вот подход, который может быть вам полезен. Я выполнил реализацию для сложения и вычитания, вы можете проделать то же самое и для других операций. Вы также можете захотеть иметь абстрактный класс для операций с одним операндом.

import java.util.Scanner;

public class Calculator {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int choice;
        do {
            System.out.println("[1] Add ");
            System.out.println("[2] Subtract ");
            System.out.println("[3] Multiply ");
            System.out.println("[4] Division ");
            System.out.println("[5] Square ");
            System.out.println("[6] Power ");
            System.out.println("[7] Mod Operation ");
            System.out.println("[8] Factorial ");

            System.out.println("[0] Quit ");

            System.out.println("Please enter your choice: ");
            choice = s.nextInt();
            int num1, num2;

            switch (choice) {
                case 1:
                    Addition addition = new Addition(s);
                    addition.performOperation();
                    break;

                case 2:
                    Subtraction subtraction = new Subtraction(s);
                    subtraction.performOperation();
                    break;

                case 3:
                    System.out.println("Enter two numbers to multiply: ");
                    num1 = s.nextInt();
                    num2 = s.nextInt();
                    System.out.println("The product of " + num1 + " and " + num2 +
                            " is: " + prod(num1, num2));
                    break;

                case 4:
                    System.out.println("Enter two numbers to divide: ");
                    num1 = s.nextInt();
                    num2 = s.nextInt();
                    System.out.println("The quotient of " + num1 + " and " + num2 +
                            " is: " + quo(num1, num2));
                    break;

                case 5:
                    System.out.println("A number to square: ");
                    num1 = s.nextInt();
                    System.out.println("The square of " + num1 + " is: " + square(num1));
                    break;

                case 6:
                    System.out.println("Enter the base and the exponent: ");
                    num1 = s.nextInt();
                    num2 = s.nextInt();
                    System.out.println("The power of " + num1 + " to the " + num2 +
                            "th power is: " + power(num1, num2));
                    break;

                case 7:
                    System.out.println("Enter two numbers to get the interger remainder of (modulo): ");
                    num1 = s.nextInt();
                    num2 = s.nextInt();
                    System.out.println("The modulo of " + num1 + " and " + num2 +
                            " is: " + mod(num1, num2));
                    break;

                case 8:
                    System.out.println("Enter a number to get the factorial of: ");
                    num1 = s.nextInt();
                    System.out.println("The factorial of " + num1 + " is: " + factorial(num1));
                    break;

                default:
                    System.out.println("Your choices should be 0 to 8!");
                    break;
            }
        }
        while (choice != 0);
        s.close();
        System.out.println("Thank you for using my program...good bye!");
        System.exit(0);
    }

    public static int prod(int num1, int num2) {
        return num1 * num2;
    }

    public static double quo(int num1, int num2) {
        return (double) num1 / num2;
    }

    public static int mod(int num1, int num2) {
        return num1 % num2;
    }

    public static long power(int base, int exp) {
        long result = 1;

        while (exp != 0) {
            result *= base;
            --exp;
        }
        return result;
    }

    public static int square(int num) {
        return num * num;
    }

    public static int factorial(int base) {
        if (base == 0)
            return 1;
        else
            return (base * factorial(base - 1));
    }
}

abstract class OperationWithTwoOperands {
    protected String prompt;
    private Scanner scanner;

    public OperationWithTwoOperands(Scanner scanner) {
        this.scanner = scanner;
    }

    public void performOperation() {
        System.out.println(prompt);
        int num1 = scanner.nextInt();
        int num2 = scanner.nextInt();
        operation(num1, num2);
    }

    abstract protected void operation(int operand1, int operand2);
}

class Addition extends OperationWithTwoOperands {
    public Addition(Scanner scanner) {
        super(scanner);
        prompt = "Enter two numbers to add:";
    }

    @Override
    protected void operation(int num1, int num2) {
        System.out.println("The sum of " + num1 + " and " + num2 + " is: " + (num1 + num2));
    }
}

class Subtraction extends OperationWithTwoOperands {
    public Subtraction(Scanner scanner) {
        super(scanner);
        prompt = "Enter two numbers to subtract:";
    }

    @Override
    protected void operation(int num1, int num2) {
        System.out.println("The difference of " + num1 + " and " + num2 + " is: " + (num1 - num2));
    }
}
1 голос
/ 01 августа 2020

вы можете использовать отдельный класс под названием Functions with stati c methods

public class Functions{
    public static int add(int num1, int num2)
    {
        return num1 + num2;
    }
    
    public static int diff(int num1, int num2)
    {
        return num1 - num2;
    }
    
    public static int prod(int num1, int num2)
    {
        return num1 * num2;
    }
    
    public static double quo(int num1, int num2)
    {
        return (double)num1 / num2;
    }
    
    public static int mod(int num1, int num2)
    {
        return num1 % num2;
    }
    
    public static long power(int base, int exp)
    {
            long result = 1;
    
            while (exp != 0)
            {
                    result *= base;
                    --exp;
            }
        return result;
    }
    
    public static int square(int num)
    {
        return num * num;
    }
    
    public static int factorial(int base)
    {
        if (base == 0)    
                return 1;    
        else    
                return(base * factorial(base - 1));     
    }
}

, и вы вызываете эти методы Functions.add(num1, num2))

Я не уверен, что вы хотите

...