java - 将四种方法合二为一

标签 java methods

如何将四种方法替换为一种能够更新变量“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/

相关文章:

java - 将 Activity 中定义的布局更改为 xml 布局

Java:子类调用父类方法

python - 为什么此类中的列表理解对某些方法有效,而对其他方法无效?

TypeScript:接口(interface)方法实现

php - 在类中使用公共(public)函数回调的数组映射

java - Hadoop分布式缓存以处理大型查找文本文件

Java 内存不足堆空间

java - 在 Java 中将字符串转换为数组

java - 如何使用 Twilio Java API 获取录制的 wav 文件

c# - 将方法存储为类的成员变量