输入描述:
存在多种数据,每组数据一行,表达式不存在空格
输出描述:
输出结果
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
ArrayList<Character> operator = new ArrayList<>();
ArrayList<Double> number = new ArrayList<>();
String exp = sc.nextLine();
double num = 0;
int tmp;
for (int i = 0; i < exp.length(); i++) {
switch (exp.charAt(i)) {
case '+':
operator.add('+');
number.add(num);
num = 0;
break;
case '-':
operator.add('-');
number.add(num);
num = 0;
break;
case '*':
tmp = getNumber(exp, i + 1);
num = num * tmp;
i += (tmp + "").length();
break;
case '/':
tmp = getNumber(exp, i + 1);
num = num / tmp;
i += (tmp + "").length();
break;
default:
num = num * 10 + Integer.parseInt(exp.charAt(i) + "");
break;
}
}
number.add(num);
double result = number.remove(0);
while (operator.size() > 0) {
switch (operator.remove(0)) {
case '+':
result += number.remove(0);
break;
case '-':
result -= number.remove(0);
break;
}
}
System.out.println((int)result);
}
}
static int getNumber(String exp, int pos) {
int num = 0;
while (!(pos >= exp.length() || exp.charAt(pos) > '9' || exp.charAt(pos) < '0')) {
num = num * 10 + exp.charAt(pos) - '0';
pos++;
}
return num;
}
}