具有特定方法和多个类的简单计算器 - Java

Simple calculator with specific methods and multiple classes - Java

提问人:mellow1245 提问时间:10/16/2023 最后编辑:Abramellow1245 更新时间:10/16/2023 访问量:54

问:

我正在尝试制作一个使用特定方法和类的计算器。给出了以下方法:

public class App {

    private static final Scanner inputScanner = new Scanner(System.in);

    private static String getString(String prompt) {  }

    private static double getDouble(String prompt) {  }
}

它必须有一个单独的类,其中包含 add、sub、mult、divide 的代码。Calculator2

该程序应如下所示:

What would you like to do? 
Add
Subtract 
Multiply 
Divide
Exit
*user inputs*
What is the first number:
*user inputs*
What is the second number:
*user inputs*
Result:

我真的在为如何调用类而苦苦挣扎,尤其是 String 方法的特定要求。我尝试了多种方法(、、只要求第一个字母使其成为字符等),但没有任何效果。我最近的尝试是尝试获取用户输入并将其转换为 char,以便我可以使用开关方法。任何帮助将不胜感激。Calculator2else ifswitch

import java.util.Scanner;


public class App {

    private static final Scanner inputScanner = new Scanner(System.in);

    public static void main(String[] args) {
        System.out.println("What would you like to do?");
        System.out.println("add");
        System.out.println("subtract");
        System.out.println("multiply");
        System.out.println("divide");
        System.out.println("exit");
        String operator = inputScanner.nextLine();
        Double userInput = getDouble();
        Double math = getString();
    }

    private static double getString() {
        char choice = operator.charAt(0);
        switch (choice) {
            case 'a':
                calculator2Object.add();
                System.out.println();
                return result = operator;
                break;
            case 's':
                calculator2Object.subtract();
                System.out.println();
                break;
            case 'm':
                calculator2Object.multiply();
                System.out.println();
                break;
            case 'd':
                calculator2Object.divide();
                System.out.println();
                break;
            case 'e':
                System.out.println("Goodbye");
                System.exit(0);
        }
    }

    private static double getDouble() {
       System.out.println("Enter the first number: ");
       double firstNumber = inputScanner.nextDouble();
       System.out.println("Enter the second number: ");
       double secondNumber = inputScanner.nextDouble();
       return firstNumber + secondNumber;
    }
}

这是课程:Calculator2

public class Calculator2 {
        double add(double firstNumber, double secondNumber) {
            double result = firstNumber + secondNumber;
            System.out.println(result);
            return result;
        }

        double subtract(double firstNumber, double secondNumber) {
            double result = firstNumber - secondNumber;
            System.out.println(result);
            return result;
        }

        double multiply(double firstNumber, double secondNumber) {
            double result = firstNumber * secondNumber;
            System.out.println(result);
            return result;
        }

        double divide(double firstNumber, double secondNumber) {
            double result = firstNumber / secondNumber;
            System.out.println(result);
            return result;
        }
    }

这些是我的错误:

cannot find symbol variable operator
cannot find symbol variable calculator2Object
cannot find symbol variable result
Java 方法 计算器

评论

0赞 Rifat Rubayatul Islam 10/16/2023
在方法中,您尚未声明 和 变量。getStringoperatorresultcalculator2Object
0赞 Abra 10/16/2023
用户应该输入什么来响应“您想做什么?他们是否输入第一个字母,即 A、S、M、D 或 E 之一?他们输入的是大写还是小写(或两者之一)?或者他们是否输入整个单词,例如“添加”。用户输入必须区分大小写,即他们必须输入“添加”还是可以输入“添加”?我知道这是一项任务,那么你是否限制了你被允许使用的 Java 的哪些部分?
0赞 Bagus Tesa 10/16/2023
calculator2Object.add();- 这部分不是缺少参数吗?您的程序中还有其他几个问题,但我不确定从哪里开始。也许用一个简单的方法编写它,然后将它们一点一点地减少到子例程中会更容易(?main

答:

0赞 Bagus Tesa 10/16/2023 #1

找不到符号变量运算符

此错误是由您的方法引起的。未在该上下文中声明,它仅可用于该方法。char choice = operator.charAt(0);getString(string)operatormain

找不到符号变量 calculator2Object

内部以前未在方法中的任何位置声明和实例化。您应该在使用变量之前实例化它(例如 )。或者,只需设置为 .calculator2ObjectgetString(string)Calculator2 calculator2Object = new Calculator2();double add(double, double)static

找不到符号变量结果

触发者 ,该变量在方法中根本不声明。请记住,除非它是属性或 -ed,否则无法访问方法中的内容。return result = operator;resultgetString(string)Calculator2getString(string)return


我建议尝试从 main 方法构建代码,然后在发现重复代码时将它们分开的原因是,这样您就有一个工作示例并了解变量范围。

看看给定的样板,我怀疑它是为了适应代码的大部分重复部分:询问用户输入。

private static final Scanner inputScanner = new Scanner(System.in);

private static String getString(String prompt) {  }

private static double getDouble(String prompt) {  }

这样想,如果你没有使用 或 ,你最终可能会有以下多个:getString(string)getDouble(string)

System.out.println("What is the first number:");
double operand = Double.parseDouble(inputScanner.nextLine());

如果您完成 into:getDouble(string)

private static String getDouble(String prompt)
{
    System.out.println(prompt);
    return Double.parseDouble(inputScanner.nextLine());
}

您可以在将结果分配给变量时进行提示,方法是执行以下操作:

double operand = getDouble("What is the first number:");

您可以以类似的方式完成 - 无论如何都是可选的。getString(string)

下一部分将调用 中的相应方法。您可以简单地将该方法转换为 .这样您就可以直接从该方法调用它们。Calculator2staticCalculator2.add(operand1, operand2)main

static double add(double firstNumber, double secondNumber) {
    double result = firstNumber + secondNumber;
    System.out.println(result);
    return result;
}

一旦你完成了这些修复,你的主要方法将(有点)更短 - 可以说你可以变得更短,更有效率。

public static void main(String args[]) {
    String operator = getString("What would you like to do?");
    char choice = operator.charAt(0);
    switch (choice) {
        case 'a':
            double operand1 = getDouble("Enter the first number:");
            double operand2 = getDouble("Enter the second number:");
            Calculator2.add(operand1, operand2);
            break;
                //the other operators
        case 'e':
            System.out.println("Goodbye");
            System.exit(0);
    }
}

半工作小提琴:https://onecompiler.com/java/3zqmgapkx

评论

1赞 mellow1245 10/16/2023
非常感谢!这确实帮助我确定了我需要更好地理解的概念。