gpt4 book ai didi

java - 如何在 Infix 到 Postfix 后将整数分组在一起

转载 作者:行者123 更新时间:2023-12-01 19:29:13 25 4
gpt4 key购买 nike

我已经编写了一个 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());```

最佳答案

有多种方法可以做到这一点。

  1. 当您检测到第一个数字时,解析它并分配给值总和

  2. 获得后续数字后,将 sum 乘以 10,然后添加数字。

  3. 继续这样做,直到处理完所有数字。然后存储推送堆栈上的值。

如果您正在使用字符串

  1. 然后读取第一个数字并分配给一个字符串。

  2. 继续读取其他数字并将它们连接到字符串。

  3. 完成后,将字符串压入堆栈。

这是第一种方法的示例。

         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/

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