如何将四种方法替换为一种能够更新变量“str”以将运算符“+ -/*”与“ADD、SUB、DIV 或 MULT”相匹配的方法?当它运行 case 语句时,我试图弄清楚如何让 case 语句识别通过扫描仪输入选择的运算符并将其与其各自的描述符字符串匹配。
import java.util.Scanner;
public class Testor4 {
public static void main(String[] args) {
String s1 = getInput("Enter a number: ");
String s2 = getInput("Enter second number");
String op = getInput("Enter operator: + - / * ");
double result = 0;
String str = " You chose to";
try{
switch(op){
case "+": str += getOpNameAdd(str); result = getSum(s1,s2); break;
case "-": str += getOpNameSub(str); result = getSub(s1,s2); break;
case "/": str += getOpNameDiv(str); result = getDiv(s1,s2); break;
case "*": str += getOpNameMult(str); result = getMult(s1,s2); break;
default: System.out.println("not an operator."); return;
}
}catch(Exception e){
System.out.println(e.getMessage());
}
System.out.printf("%s%s%.2f","Result is: ",str,result);
}
private static double getSum(String s1, String s2){
double d1 = Double.parseDouble(s1);
double d2 = Double.parseDouble(s2);
return d1 + d2;
}
private static double getSub(String s1, String s2){
double d1 = Double.parseDouble(s1);
double d2 = Double.parseDouble(s2);
return d1 - d2;
}
private static double getDiv(String s1, String s2){
double d1 = Double.parseDouble(s1);
double d2 = Double.parseDouble(s2);
return d1 / d2;
}
private static double getMult(String s1, String s2){
double d1 = Double.parseDouble(s1);
double d2 = Double.parseDouble(s2);
return d1 * d2;
}
public static String getOpNameAdd(String str){
return str = " ADD!";
}
public static String getOpNameSub(String str){
return str = " Subtract!";
}
public static String getOpNameDiv(String str){
return str = " Divide!";
}
public static String getOpNameMult(String str){
return str = " Multiply!";
}
public static String getInput(String prompt){
System.out.println(prompt);
Scanner sc = new Scanner(System.in);
return sc.nextLine();
}
}
最佳答案
为什么不这样做呢?
try{
switch(op){
case "+": str += " ADD!"; result = getSum(s1,s2); break;
case "-": str += " Subtract!"; result = getSub(s1,s2); break;
case "/": str += " Divide!"; result = getDiv(s1,s2); break;
case "*": str += " Multiply!"; result = getMult(s1,s2); break;
default: System.out.println("not an operator."); return;
}
}catch(Exception e){
System.out.println(e.getMessage());
}
如果字符串将在其他地方重用,您也可以将其设为字符串常量:
public static final String OpNameAdd = " ADD!";
关于java - 将四种方法合二为一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34734228/