2016-02-13 226 views
0

我正在尝试使用基于char的堆栈来解析后缀表达式。
我需要将一些负值推入我的基于字符的堆栈,例如'-2',但它只存储'-'部分。
我确切的代码看起来像这个 -
如何将一个负整数值转换为char数据类型

   char val=Character.forDigit(operation(temp),10); 
      System.out.println("pushed is "+val); 


输出为"pushed is - "
请帮助。

+1

-2是两个字符,这就是为什么你只看到推动的第一个字符。 – pczeus

+0

如果你把你的堆栈当成数字,试试'short' - [也是16位,就像char,但是签名。](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html)。 – Kenney

回答

1

char意味着它由字符在任何特定语言支持的字符。 -2不是1个字符,因此它由string组成,因为它由字符序列组成,例如'-''1'。所以你的代码做的是做正确的事情。

现在,鉴于您确实需要字符来存储您的数字,您必须将您的负值映射到其他字符。 0..9的数字实际上是ascci #48..57。所以你可以做的是从ascci表中连续10个字符,并将它们视为-ve。假设你选择一个..我作为-ve数然后a = -1,b = -2等等......

请记住,既然你使用的是字符,你不能处理两个只要您将每个数字视为一个单独的字符。然后你必须处理所有的“十进制”操作。

+0

非常感谢。这似乎很合逻辑,但如果我使用'a'表示'-1',那我该如何使用它来做后缀操作。我是否需要为所有可能的情况使用切换案例创建单独的映射。如果是,那么我将如何区分正数和负数。 –

相关问题