gpt4 book ai didi

java - 使用堆栈中缀到 Postfix

转载 作者:行者123 更新时间:2023-12-04 06:14:17 28 4
gpt4 key购买 nike

我不确定我这样做是否正确。我正在尝试将中缀方程转换为后缀方程,例如:

(3 + 4) * 2 

在后缀中是:
4 3 + 2 *

如果可能的话,我试图用一种方法来完成这一切。

现在我收到一个 arrayoutofbounds 错误,所以我弹出错误的地方或什么的。

这是 infixtopostfix 方法。
public void InfixToPostfix(String f) {
Stacked postfix = new Stacked(100);
Stacked op = new Stacked(100);
char c;
String fix = f;
//String out = "";
int out = 0;

for (int i = 0; i < fix.length(); i++) {
c = fix.charAt(i);

if (c != '+' || c != '*' || c != '-' || c != '/' || c != '(' || c != ')') {
// out += c;
postfix.push(c);
}
else if (c == '+' || c == '*' || c == '-' || c == '/') {
if (c != ')') {
op.push(c);
} else {
out = (char) op.pop();
s.push(out);
}
out = (char) op.pop();
System.out.println("THE POSTFIX = " + out)
}
}
}

最佳答案

  public class Postfix {

private int priority(char ch) {
if (ch == '^')
return 3;
if (ch == '/' || ch == '*')
return 2;
if (ch == '+' || ch == '-')
return 1;
return 0;
}

public String toPostfix(String in ) {

String copy = in +")";
Stack s = new Stack(copy.length());
s.push('(');

int i, l = copy.length();
char ch;

String r = "";
for (i = 0; i < l; i++) {

ch = copy.charAt(i);
if (Character.isLetter(ch) == true)
r += ch;

else if (ch == '(')
s.push(ch);

else if (ch == ')') {
while (s.seeTop() != '(')
r += s.popSeeTop();

s.pop();

} else {
while (priority(ch) <= priority(s.seeTop()))
r += s.popSeeTop();

s.push(ch);
}
}
return r;
}
}

关于java - 使用堆栈中缀到 Postfix,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7455862/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com