当前位置: 首页 > 知识库问答 >
问题:

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

濮阳宏硕
2023-03-14

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

1.加入

2.减去

3.乘法

4.分部

5.广场

6.权力

7.Mod操作

8.阶乘

0.退出

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

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

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

当用户选择结束选项时,该程序终止。

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

我有一个使用开关语句和大小写的程序的代码,但是我们班甚至还没有学到这些。这两天我在网上到处找,就是找不到,所以如果解决方案很简单,请道歉,并提前感谢您的所有帮助。这是到目前为止我的程序的代码。

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个答案

丁淇
2023-03-14

以下是一种可能对您有用的方法。我已经完成了加法和减法的实现,您也可以对其他操作执行相同的操作。您可能还希望为单操作数操作创建抽象类。

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));
    }
}
关志勇
2023-03-14

您可以使用一个单独的类称为函数与静态方法

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

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

 类似资料:
  • 问题内容: 今天早些时候,我问如何在不陷入无限循环的情况下重试/捕获输入不匹配异常 但是这是两个过程,首先,游戏会要求用户提供网格的大小,然后在启动后,游戏会要求用户设置标志或跨过一个单元格(如果我的游戏在其他单元格之上,会打印出周围的地雷数量),但是我收到一些奇怪的错误代码: 错误: 在我的打印语句之间打印异常消息的奇怪的事情(网格是一条语句,指令也是一条) 进行搜索时,我发现无法在同一位置使用

  • 我有一个Java程序,需要在多个类的多个点上从控制台获取用户输入。我试着在每节课上使用一台扫描仪,但当我关闭一台扫描仪时,它会关闭系统。所以我想在整个程序中使用相同的扫描仪。我在主类中打开了扫描仪,但在其他类中如何使用相同的扫描仪?

  • 问题内容: 在Java中,出现此异常: 从此Java代码: 抛出异常 System.out.println(file.next()。charAt(counter)); 异常是什么意思? 问题答案: 您在循环的每次迭代中都调用两次,因此,当您快要结束时,您会跳出列表的末尾,编译器会告诉您那里什么也没有。 代替这个: 改为这样做: 看这里

  • 我正在为课堂做作业。由于某种原因,程序完全跳过了用户应该键入变量的部分。我想不出任何理由为什么它会以这种方式运行,因为我的其余代码位于部分之后(它要求诸如和类型之类的东西)工作正常且有序。

  • 我想从标准输入中读取一个双数,但是我总是得到这个异常: Java . util . inputmismatchexception 如果输入是整数,那没问题,但是如果是双精度的,我会得到异常。 线程“main”Java . util . inputmismatchexception Java . util . scanner . throw for(scanner . Java:864)Java .

  • 我是这样编译它们的: 确切的错误是这样的: