-2

在我的一个问题中,我得到了 RuntimeException,因为有必要将对象转换为 char。我尝试使用 charValueOf() 方法来获取对象的原始值,但无法做到。这是我的代码......

while ((stack.size() > 0) && (stack.peek() != '('))
{
    if (ComparePrecedence(stack.peek(), infix[i]))
    {
    }
}
boolean ComparePrecedence(char top, char p_2)
{
}

我该如何解决这个问题?谢谢..

4

3 回答 3

6

尝试将通用对象转换为字符通常不是一个好主意,因为它没有任何意义。如果对象是 Character,您可以使用以下内容。

char ch = o.toString().charAt(0)
于 2012-11-29T14:53:53.877 回答
0

我认为你有一个例外,因为你没有使用字符包装类的实例。如果您使用an instance of the character wrapper class,那么您可以调用/使用 charValue 方法。

于 2012-11-29T14:57:07.233 回答
0

您遇到的问题是由您使用的堆栈引起的。堆栈是基于对象的,因此它允许您推送字符类型,但是当您弹出或查看它们时,它们将作为对象类型出现。如果您总是要推送 char 类型值,您可以更改堆栈代码以接受通用类型,例如<Character>.

另一种选择是通过执行以下操作将对象投射回(Character)当您窥视或弹出时:

while ((stack.size() > 0) && ((Character) stack.peek() != '('))
{
    if (ComparePrecedence((Character) stack.peek(), infix[i]))
    {
    }
}
于 2014-03-01T21:02:45.497 回答