我正在尝试使用基于char的堆栈来解析后缀表达式。
我需要将一些负值推入我的基于字符的堆栈,例如'-2'
,但它只存储'-'
部分。
我确切的代码看起来像这个 -
如何将一个负整数值转换为char数据类型
char val=Character.forDigit(operation(temp),10);
System.out.println("pushed is "+val);
输出为"pushed is - "
请帮助。
我正在尝试使用基于char的堆栈来解析后缀表达式。
我需要将一些负值推入我的基于字符的堆栈,例如'-2'
,但它只存储'-'
部分。
我确切的代码看起来像这个 -
如何将一个负整数值转换为char数据类型
char val=Character.forDigit(operation(temp),10);
System.out.println("pushed is "+val);
输出为"pushed is - "
请帮助。
字符类是单数。就像一个字符中的一个数字一样,所以它只能得到'-2'的第一个字符。
一个更全面的解释请参见本:Difference between "char" and "String" in Java
char
意味着它由字符在任何特定语言支持的字符。 -2
不是1个字符,因此它由string
组成,因为它由字符序列组成,例如'-'
和'1'
。所以你的代码做的是做正确的事情。
现在,鉴于您确实需要字符来存储您的数字,您必须将您的负值映射到其他字符。 0..9
的数字实际上是ascci #48..57
。所以你可以做的是从ascci表中连续10个字符,并将它们视为-ve。假设你选择一个..我作为-ve数然后a = -1,b = -2等等......
请记住,既然你使用的是字符,你不能处理两个只要您将每个数字视为一个单独的字符。然后你必须处理所有的“十进制”操作。
非常感谢。这似乎很合逻辑,但如果我使用'a'表示'-1',那我该如何使用它来做后缀操作。我是否需要为所有可能的情况使用切换案例创建单独的映射。如果是,那么我将如何区分正数和负数。 –
-2是两个字符,这就是为什么你只看到推动的第一个字符。 – pczeus
如果你把你的堆栈当成数字,试试'short' - [也是16位,就像char,但是签名。](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html)。 – Kenney