创建一个计算器,该计算器使用扫描程序从单独的类中调用方法

Creating a calculator that calls the methods from a separate class using scanner

提问人:stefmarie93 提问时间:8/2/2020 更新时间:8/2/2020 访问量:1385

问:

我正在创建一个计算器,其中计算器的每个函数都必须位于一个单独的类中,并使用扫描仪输入从 main 方法调用。

1.添加

2.减法

3.乘法

4.分部

5.正方形

6.电源

7.模组操作

8.阶乘

0.退出

我必须创建由对象调用的每个方法。计算器需要一个主类(具有 main() 方法)和一个具有上述计算方法的用户定义类。该程序必须让用户选择一个操作(上述计算之一)和操作数(数字)。某些计算需要两个操作数。(例如 A + B, AB)某些计算需要一个操作数。(例如 A2, N!)附加功能:

•让计算功能继续运行,直到用户想要退出此程序。

•完成一个计算后,让用户选择另一个操作。

•当用户选择 END 选项时,此程序终止。

•实施所有操作。不要使用 Java 库数学方法。

我有一个使用 switch 语句和 case 的程序的代码,但我们班甚至没有学到任何这些。这两天我在网上到处找,就是想不通,所以如果解决方案很简单,我深表歉意,并提前感谢大家的帮助。到目前为止,这是我的程序的代码。

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));     
}

}

爪哇岛 方法 java.util.scanner 计算器

评论

0赞 user3341564 8/2/2020
问题在哪里?

答:

1赞 user3341564 8/2/2020 #1

您可以将名为 Functions 的单独类与静态方法一起使用

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))

我不确定这是否是你想要的

1赞 Hitesh A. Bosamiya 8/2/2020 #2

这里有一个方法,可能对您有用。我已经实现了加法和减法,您也可以对其他操作执行相同的操作。您可能还希望为单个操作数操作提供抽象类。

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));
    }
}