我正在尝试制作一个使用特定方法和类的计算器。给出以下方法:
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
找不到符号变量运算符
此错误是由
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);
}
}