gpt4 book ai didi

java - 为什么从堆栈到 int 的转换没有在 Java 中运行?

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

我正在尝试将存储在堆栈中的字符转换为整数,这就是我所做的。

operands = new StackLinked();

if ( (a == '0') || (a == '1') || (a == '2') || (a == '3') || (a == '4') ||
(a == '5') || (a == '6') || (a == '7') || (a == '8') || (a == '9') )
{
operands.push(a); /*Stor operands in the stack operands.*/
}

//This line crushes my program. I don't know why.
int op1 = ((Integer)operands.peek()).intValue();

最佳答案

您尚未显示 a 的声明,但我怀疑它的类型为 char。然后它会自动装箱为 Character,因此当您转换为 Integer 时,转换会失败。

如果您更改代码以使用:

operands.push((int) a);

应该从 char 转换为 int,然后将 box 转换为 Integer,然后您就可以离开了。

或者,使用:

// Implicit conversion from char to int
int op1 = ((Character) operands.peek()).charValue();

编辑:请注意,上述解决方案最终都会在 a='1' 时给出 op1=49,在 a='2' 时给出 op2=50 等。如果您确实想要 op1=1当 a='1' 时,您可以使用 Character.digit 或者(我们已经知道 'a' 在 '0' 到 '9' 范围内)您可以减去 '0',即

operands.push((int) (a-'0'));

int op1 = ((Character) operands.peek()).charValue() - '0';

在第一种情况下,强制转换实际上是多余的,因为减法的结果将是 int 而不是 char - 但为了清楚起见,我将其保留在那里.

关于java - 为什么从堆栈到 int 的转换没有在 Java 中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/573384/

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