如何将char转换为Integer类型?
int p2 = (int)stack2.pop();
int p1 = (int)stack2.pop();
int res = result(p2, p1, calStr.charAt(i));
stack2.push(res);
我执行了上述方法,但获得了runtime error
,java.lang.Character
无法投放到java.lang.Integer
主题
"main"
java.lang.ClassCastException:
中的异常
java.lang.Character
无法投放到java.lang.Integer
答案 0 :(得分:0)
您无法直接将Character
投射到Integer
,这些对象。只有当我们讨论数据类型 char
和int
时,它们之间的演员才有效。
虽然Java确实自动框和 -unboxes Integer
到int
,Character
到char
和反之亦然,它不会自动使用此技术在Integer
到Character
之间进行快速转换。
当然,您可以进行如下转换:
Character -> char -> int -> Integer
因此代码可能如下所示:
Character itemAsCharacter = stack2.pop();
char itemAsChar = itemAsCharacter.charValue();
int itemAsInt = (int) itemAsChar;
Integer itemAsInteger = Integer.valueOf(itemAsInt);
或简而言之:
// Last step uses the implicit auto-boxing of int -> Integer
Integer item = (int) stack2.pop().charValue();
向后的方向类似:
Integer resultAsInt = ...
Character result = (char) resultAsInt.intValue();
stack2.push(result);
请注意,类Stack
,也是Vector
,是Java中过时的类。有些功能相同的类提供了更多的方法,更强大,更简单。 LIFO 数据结构的示例列在接口Deque
下,最常用的实现是LinkedList
,还有一个数组变体,ArrayDeque
以下是documentation of Stack的相关摘录:
一套更完整,更一致的LIFO堆栈操作 由Deque接口及其实现提供,应该 优先使用本课程。