【问题标题】:Creating a calculator that calls the methods from a separate class using scanner创建一个计算器,使用扫描仪从单独的类中调用方法
【发布时间】:2020-08-01 16:55:55
【问题描述】:

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

1.添加

2.减法

3.乘法

4.部门

5.正方形

6.电源

7.Mod操作

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

}

【问题讨论】:

  • 问题在哪里?
  • @user3341564 问题是如何使用用户的扫描仪输入从与主方法分开的类中调用计算器方法。所以比如提示用户有9个选项,无论用户选择哪个选项,程序都会使用其他类中对应的方法来完成功能。

标签: java methods java.util.scanner calculator


【解决方案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))

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

【讨论】:

    【解决方案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));
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-15
      • 2020-12-14
      • 1970-01-01
      相关资源
      最近更新 更多