如何比较if语句java中的多个条件?

How to compare multiple condition in if statement java?

我是 java 的新手,我正在尝试创建一个具有附加功能(例如平方、平方根等)的基本计算器。 我正在为用户的输入使用 if-else 逻辑。 逻辑有点像这样:

                           Expression
                 --------------------------------
                |                                |
            if expression(+,-,*,/)              else if expression (sqrt, sqr)  
                |                                |
            take 2 inputs & execute switch      take one input and execute
            statements                          java math functions

我坚持使用 if 语句,我需要将表达式与 (+-*/) 运算符进行比较。 谁能指导我实现这个?也欢迎任何其他改进逻辑的建议。

使用 Switch(String) - cases 映射到特定代码,您可以使用 JDK1.6 内置的 ScriptEngineManager 来评估简单的数学字符串

import java.util.Scanner;
import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
import javax.script.ScriptException;

public class MathCalc {

    public static void main(String[] args) throws ScriptException {
        Scanner scan = new Scanner(System.in);

        System.out.println("Enter the expression : ");
        String expresion = scan.nextLine();

        double a, b;
        double result = 0;

        ScriptEngineManager mgr = new ScriptEngineManager();
        ScriptEngine engine = mgr.getEngineByName("JavaScript");

        switch (expresion) {
            case "+":
            case "-":
            case "/":
            case "*":
                a = scan.nextDouble();
                b = scan.nextDouble();
                result = Double.parseDouble(String.valueOf(engine.eval(a + expresion + b)));
                break;
            case "sqrt":
                a = scan.nextDouble();
                result =  Double.parseDouble(String.valueOf(engine.eval("Math.sqrt("+a+")")));
                break;
            case "sqr":
                a = scan.nextDouble();
//                result = Math.pow(a,2);
                result =  Double.parseDouble(String.valueOf(engine.eval(a + "*" + a)));
                break;
        }
        System.out.println(result);
    }

}


我试过了,似乎有效。但是我确定这不是正确的编码方式

导入java.util.Scanner;

public class 计算器 {

public static void main(String[] args) {
    System.out.println("Hello Dan! Welcome to your basic calculator");
    Scanner usrInput = new Scanner(System.in); // for usr inputs

    double input1, input2;  //for usr i/p 1,2 and result

    double result = 0; 

    System.out.println("what\'d you like to perform? (*,/,-,+, ^(sqrt), 2(square)");
    char mathOperator = usrInput.next().charAt(0); // for math operation

    if (mathOperator == '+' || mathOperator == '-' || mathOperator == '*' || mathOperator == '/') {
        System.out.print("enter first number: ");
        input1 =  usrInput.nextDouble();

        System.out.print("enter second number: ");
        input2 = usrInput.nextDouble();

        switch(mathOperator)
        {
        case '*':
            result = input1*input2;
            break;

        case '/':
            result = input1/input2;
            break;

        case '+':
            result = input1+input2;
            break;

        case '-':
            result = input1-input2;
            break;
        }

    } else if (mathOperator == '^' || mathOperator == '2') {

        System.out.print("enter number: ");
        input1 =  usrInput.nextDouble();

        switch(mathOperator)
        {
        case '^':  // sqrt
            result = Math.sqrt(input1);
            break;

        case '2':
            result = input1*input1;
            break;
        }
    } else {
        System.out.println("Enter a valid operator");
    }

    usrInput.close();       
    System.out.println(result);

}

}