提问人:mellow1245 提问时间:10/16/2023 最后编辑:Abramellow1245 更新时间:10/16/2023 访问量:54
具有特定方法和多个类的简单计算器 - Java
Simple calculator with specific methods and multiple classes - Java
问:
我正在尝试制作一个使用特定方法和类的计算器。给出了以下方法:
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,以便我可以使用开关方法。任何帮助将不胜感激。Calculator2
else if
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
答:
找不到符号变量运算符
此错误是由您的方法引起的。未在该上下文中声明,它仅可用于该方法。char choice = operator.charAt(0);
getString(string)
operator
main
找不到符号变量 calculator2Object
内部以前未在方法中的任何位置声明和实例化。您应该在使用变量之前实例化它(例如 )。或者,只需设置为 .calculator2Object
getString(string)
Calculator2 calculator2Object = new Calculator2();
double add(double, double)
static
找不到符号变量结果
触发者 ,该变量在方法中根本不声明。请记住,除非它是属性或 -ed,否则无法访问方法中的内容。return result = operator;
result
getString(string)
Calculator2
getString(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)
下一部分将调用 中的相应方法。您可以简单地将该方法转换为 .这样您就可以直接从该方法调用它们。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
评论
getString
operator
result
calculator2Object
calculator2Object.add();
- 这部分不是缺少参数吗?您的程序中还有其他几个问题,但我不确定从哪里开始。也许用一个简单的方法编写它,然后将它们一点一点地减少到子例程中会更容易(?main