Java 如何在中缀到后缀后将整数分组在一起
我已经写了一个中缀到后缀的方法,但我正在努力找出如何在运算符之间保持整数在一起。目前,放入该方法的所有整数都在该方法的末尾分开。所以3*15*(45-23)变成了(3,1,5,*,4,5,2,3,-,*),当它应该是(3,15,*,45,23,-,*)。我只是需要一些正确方向的提示或指点来解决这个问题。我读了一些关于抽象层的东西,但对它的理解还不够,无法实现它 更新 我让我的程序保持整数分组在一起,但我的修正留下了我的数字被钉在最后。我的修正包括扫描下一个数字,而它不是空的,如果它是一个数字,但当前数字将被设置为下一个循环中的下一个数字。我应该尝试新的解决方案,还是让这个解决方案发挥作用Java 如何在中缀到后缀后将整数分组在一起,java,postfix-notation,infix-notation,shunting-yard,Java,Postfix Notation,Infix Notation,Shunting Yard,我已经写了一个中缀到后缀的方法,但我正在努力找出如何在运算符之间保持整数在一起。目前,放入该方法的所有整数都在该方法的末尾分开。所以3*15*(45-23)变成了(3,1,5,*,4,5,2,3,-,*),当它应该是(3,15,*,45,23,-,*)。我只是需要一些正确方向的提示或指点来解决这个问题。我读了一些关于抽象层的东西,但对它的理解还不够,无法实现它 更新 我让我的程序保持整数分组在一起,但我的修正留下了我的数字被钉在最后。我的修正包括扫描下一个数字,而它不是空的,如果它是一个数字,但
StringBuilder temp = new StringBuilder();
int j = i;
temp.append(numAsString);
if (!expression.substring(j+1, j+2).isEmpty())
{
nextNum = expression.substring(j+1, j+2);
while (nextNum.equals("0") || nextNum.equals("1") || nextNum.equals("2")
|| nextNum.equals("3") || nextNum.equals("4") || nextNum.equals("5") || nextNum.equals("6") || nextNum.equals("7")
|| nextNum.equals("8") || nextNum.equals("9"))
{
if (numAsString.equals("π") || nextNum.equals("π")) {
temp.append("3.14");
}
temp.append(nextNum);
System.out.println(nextNum);
j++;
nextNum = expression.substring(j+1, j+2);
}
}
numStack.push(temp.toString());```
有几种方法可以做到这一点
和
sum
乘以10
并将数字相加String v=“4982+2345”;
int值=0;
int n=0;
while(Character.isDigit(v.charAt(n))){
字符c=v.charAt(n);
value=value*10+(c-“0”);//从ASCII转换数字
n++;
}
System.out.println(“value=“+value”);
印刷品
值=4982
请注意,
n
一旦到达字符串末尾,就会超出范围。但是主代码应该注意这一点。您没有正确扫描操作数。当有以下数字时,您需要继续扫描。expression.substring(j+1,j+2).isEmpty()
将永远不会为真,因此您可以删除该条件