Java 无操作优先级的infixToPostfix算法

Java 无操作优先级的infixToPostfix算法,java,algorithm,stack,postfix-notation,infix-notation,Java,Algorithm,Stack,Postfix Notation,Infix Notation,如果我有这个字符串中缀表达式2*4+3-15/2,并且我希望输出后缀表达式,而不考虑像这样的操作的优先级 2 4*3+15-2/ 我需要在此代码示例中进行哪些修改才能“删除”该优先级。我从Geeksforgeks这里得到了这个代码。我发现要改变以满足我的需求有点困难。我应该从哪里开始?谢谢 当前代码给我这个输出:24*3+152/- 专用int Prec(字符串ch) { 开关(ch) { 格“+”: 案例“-”: 返回1; 案例“*”: 案例“/: 返回2; 案例“^”: 返回3; } 返回

如果我有这个字符串中缀表达式
2*4+3-15/2
,并且我希望输出后缀表达式,而不考虑像这样的操作的优先级

2 4*3+15-2/

我需要在此代码示例中进行哪些修改才能“删除”该优先级。我从Geeksforgeks这里得到了这个代码。我发现要改变以满足我的需求有点困难。我应该从哪里开始?谢谢

当前代码给我这个输出:
24*3+152/-


专用int Prec(字符串ch)
{
开关(ch)
{
格“+”:
案例“-”:
返回1;
案例“*”:
案例“/:
返回2;
案例“^”:
返回3;
}
返回-1;
}
专用布尔值isNumeric(字符串strNum){
if(strNum==null){
返回false;
}
试一试{
double d=double.parseDouble(strNum);
}捕获(NumberFormatException nfe){
返回false;
}
返回true;
}
私有字符串infixToPostfix(字符串infixExpression){
//正在初始化结果的空字符串
StringBuilder postfixExpression=新的StringBuilder(新字符串(“”);
字符串[]infixExp=infixExpression.split(“”);
//初始化空堆栈
堆栈=新堆栈();
for(字符串标记:infixExp){
System.out.println(令牌+“”);
//如果扫描的字符是操作数,请将其添加到输出。
如果(是数字(标记))
postfixExpression.append(标记);
//如果扫描的字符是“(”,请将其推送到堆栈中。
else if(标记为等于(“”)
堆栈推送(令牌);
//如果扫描的字符是“'),则从堆栈中弹出并输出
//直到遇到“(”为止。
else if(标记等于(“)”){
而(!stack.isEmpty()&&!stack.peek().equals(“”)
append(stack.pop());
如果(!stack.isEmpty()&&!stack.peek()等于(“”)
返回“无效表达式”;//无效表达式
其他的
stack.pop();
}else//遇到运算符
{

而(!stack.isEmpty()&&Prec(token)似乎您只需要颠倒由运算符和数字组成的每对的顺序。您可以使用正则表达式和
replaceAll

String infix = "2*4+3-15/2";
    
String postfix = infix.replaceAll("([*+-/])([0-9]+)", " $2 $1");
    
System.out.println(postfix);
输出:


2 4*3+15-2/

如果可能的话,
二叉树
数据类型可能更适合这种情况。只需在
Prec()
方法中给每个运算符相同的优先级。@Marqueisoflorne哦,天哪,你说得对,就是这么简单,你可以写一个答案,这样我就可以绿色检查你:)感谢她要求修改他现有的代码。常规语言技术并不能解决无上下文问题。