沒有用棧,前綴還是可以直接用正則的
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String expression = scanner.nextLine();
scanner.close();
System.out.println(getResult(expression));
}
private static String getResult(String expression) {
Pattern pattern = Pattern.compile("([\\+\\-\\*/]) (\\d+) (\\d+)");
Matcher matcher;
while (true) {
matcher = pattern.matcher(expression);
if (!matcher.find()) {
break;
}
char op = matcher.group(1).charAt(0);
int n1 = Integer.parseInt(matcher.group(2));
int n2 = Integer.parseInt(matcher.group(3));
expression = expression.replace(matcher.group(0), String.valueOf(getResult(op, n1, n2)));
}
return expression;
}
private static int getResult(char op, int n1, int n2) {
switch (op) {
case '*':
return n1 * n2;
case '+':
return n1 + n2;
case '-':
return n1 - n2;
case '/':
return n1 / n2;
}
return -1;
}
}