Я пишу код, который принимает инфиксное выражение и преобразует его в постфиксный.Затем он берет выражение постфикса и решает его.Преобразование из инфикса в постфикс работает нормально, но по какой-то причине мой код не может решить выражение постфикса, если оно содержит двухзначное число или более.Первоначально он читал бы 10 2+ и возвращал 3, но с моим текущим кодом он читает 10 2+ и выплевывает 540, поэтому я предполагаю, что при переходе от char к int я получаю код ASCII вместо фактического значения,Вот часть моего кода, где он пытается прочитать строку постфикса, определить, какой номер у него есть, и поместить его в стек для последующего решения: (Обратите внимание, я знаю, что текущая установка поддерживает только до 3 цифр)
LinkedStack<Integer> stack = new LinkedStack<Integer>();
for (int i = 0; i < str.length(); i++) {
if(Character.isDigit(str.charAt(i))) {
if(i+1 == str.length()) {
stack.push(Character.getNumericValue(str.charAt(i)));
break;
}
if(Character.isDigit(str.charAt(i+1))) {
char x = str.charAt(i);
char y = str.charAt(i+1);
int k = x * 10;
int m = k + y;
stack.push(m);
i++;
}
else if(Character.isDigit(str.charAt(i+1)) && Character.isDigit(str.charAt(i+2))){
char x = str.charAt(i);
char y = str.charAt(i+1);
char z = str.charAt(i+2);
int k = x * 100;
int w = y * 10;
int m = x + y + z;
stack.push(m);
i++;
i++;
}
else{
stack.push(Character.getNumericValue(str.charAt(i)));
}
Любой отзыв будет полезен.Спасибо!