如何比较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);
}
}
我是 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);
}
}