作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经编写了一个 Infix 到 Postfix 方法,但我正在努力弄清楚如何在运算符之间将整数保持在一起。目前,放入该方法的所有整数在方法末尾都被分隔。因此 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 value = 0;
int n = 0;
while (Character.isDigit(v.charAt(n))) {
char c = v.charAt(n);
value = value * 10 + (c - '0'); // Convert digit from ASCII
n++;
}
System.out.println("value = " + value);
打印
value = 4982
请注意,一旦到达字符串末尾,n
就会出界。但你的主代码应该处理这个问题。
关于java - 如何在 Infix 到 Postfix 后将整数分组在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59277272/
我是一名优秀的程序员,十分优秀!