Я создаю калькулятор с + - * / и% (модуль).Базовый калькулятор работает, но теперь мне интересно, как я должен расставить приоритеты умножения и деления перед сложением и вычитанием.Не могу разобраться.
Мне нужно написать целую строку, которая будет преобразована в двойную, а затем обратно в строку для распечатки.
пример: 3 + 3-4 *8 + 5/6 + 5
Вот мой код ниже
public String calculateExpression(String expression){
double dres = 0.0;
String[] split = expression.split("(?=[*/+-])|(?<=[*/+-])");
dres = Double.parseDouble(split[0]);
for (int i = 1; i < split.length; i+= 2) {
String op = split[i];
double val = Double.parseDouble(split[i+1]);
switch (op) {
case "+":
dres = Addition(dres, val);
break;
case "-":
dres = Subtraction(dres, val);
break;
case "*":
dres = Multiplication(dres, val);
break;
case "/":
dres = Division(dres, val);
break;
default:
break;
}
}
String res = Double.toString(dres);
return res;
}
public double Addition(double d1,double d2) {
return d1+d2;
}
public double Subtraction(double d1, double d2) {
return d1-d2;
}
public double Multiplication(double d1, double d2) {
return d1*d2;
}
public double Division(double d1, double d2) {
return d1/d2;
}
public double Modulus(double d1, double d2) {
return d1%d2;
}