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

问题描述 投票:0回答:1

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

public class App {

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

    private static String getString(String prompt) {  }

    private static double getDouble(String prompt) {  }
}

它必须有一个单独的

Calculator2
类,其中包含 add、sub、mult、divide 的代码。

该程序应该如下所示:

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:

我真的很纠结如何调用

Calculator2
类,尤其是String方法的具体要求。我尝试了多种方法(
else if
switch
,仅要求第一个字母使其成为字符等),但没有任何效果。我最近的尝试是尝试获取用户输入并将其转换为字符,以便我可以使用 switch 方法。任何帮助将不胜感激。

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 class methods calculator
1个回答
0
投票

找不到符号变量运算符

此错误是由

char choice = operator.charAt(0);
方法中的
getString(string)
引起的。
operator
未在该上下文中声明,并且仅适用于
main
方法。

找不到符号变量calculator2Object

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

找不到符号变量结果

return result = operator;
触发,在
result
方法中根本没有声明
getString(string)
变量。请记住,
Calculator2
方法中的内容无法通过
getString(string)
访问,除非它是属性或
return
-ed。


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

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

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

如果您将

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)
- 无论如何它都是可选的。

下一部分将调用

Calculator2
中的适当方法。您可以简单地将方法变成
static
。这样您就可以直接从
Calculator2.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

© www.soinside.com 2019 - 2024. All rights reserved.