所以,我的问题是,如何让这个让我的计算器应用程序能够像这样输入100 * 2/2 + 5并让它返回它的总和? 或者甚至以某种方式使它使用()括号..?
import java.util.Scanner;
public class Calculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter number: ");
String input = scanner.nextLine();
System.out.println("Enter number 2: ");
String input2 = scanner.nextLine();
System.out.println("Enter operator ");
String op = scanner.nextLine();
int intEnter1 = Integer.parseInt(input.toString());
int intEnter2 = Integer.parseInt(input2.toString());
if (op.contains("+")) {
System.out.println(intEnter1 + intEnter2);
}
if (op.contains("-")) {
System.out.println(intEnter1 - intEnter2);
}
if (op.contains("*")) {
System.out.println(intEnter1 * intEnter2);
}
if (op.contains("/")) {
double intEnter1Double = (double) intEnter1;
double intEnter2Double = (double) intEnter2;
System.out.println(intEnter1Double / intEnter2Double);
}
}
}
答案 0 :(得分:4)
还有一个非常好的库,用于评估名为exp4j的数学表达式。
您可以这样做:
Expression e = new ExpressionBuilder("3 * sin(y) - 2 / (x - 2)")
.variables("x", "y")
.build()
.setVariable("x", 2.3)
.setVariable("y", 3.14);
double result = e.evaluate();
答案 1 :(得分:2)
我找到了一个用于评估表达式的库。你可以试试这个。
http://javaluator.sourceforge.net/en/home/
Double value = new DoubleEvaluator().evaluate(expression);
但是这个库可以让你全部工作,也许你想自己做算法没有?
答案 2 :(得分:2)
您必须将表达式转换为Reverse Polish notation。 我们的想法是将复杂表达式转换为可以使用以下算法计算结果的形式:
例如,给定输入:
5 + ((1 + 2) × 4) − 3
符号如下:
5 1 2 + 4 × + 3 −