我正在嘗試使用基於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