在我的一个问题中,我得到RuntimeException,因为有必要将对象转换为char。我试图通过使用charValueOf()方法来获取对象的原始值,但无法做到。这是我的代码.....
while ((stack.size() > 0) && (stack.peek() != '('))
{
if (ComparePrecedence(stack.peek(), infix[i]))
{
}
}
boolean ComparePrecedence(char top, char p_2)
{
}
我该如何解决这个问题?感谢..
答案 0 :(得分:6)
尝试将通用对象转换为char通常不是一个好主意,因为它没有任何意义。如果对象是角色,您可以使用以下内容。
char ch = o.toString().charAt(0)
答案 1 :(得分:0)
我认为你有一个例外,因为你没有使用字符包装类的实例。如果您使用an instance of the character wrapper class
,则可以调用/使用charValue方法。
答案 2 :(得分:0)
您遇到的问题是由您正在使用的堆栈引起的。堆栈是基于对象的,因此它允许您推送char类型,但是当您弹出或查看它们时,它们将作为对象类型出现。如果您总是要推送char类型值,则可以更改堆栈代码以接受通用类型,例如<Character>
。
另一种选择是在你偷看或弹出时将对象强制转换为(Character)
:
while ((stack.size() > 0) && ((Character) stack.peek() != '('))
{
if (ComparePrecedence((Character) stack.peek(), infix[i]))
{
}
}