我正在编写一个采用中缀表达式并将其转换为后缀的代码。然后它采用后缀表达式并解决它。从中缀转换为后缀工作正常,但由于某种原因,如果后缀表达式包含 2 位或更多,我的代码无法解决后缀表达式。最初它会读取 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)));
}
任何反馈都会有所帮助。谢谢!
慕尼黑5688855
慕勒3428872
相关分类