2014-03-24 74 views
-1

我正在尋找一個簡單的答案,似乎無法找到一個。在Java中鑄造int到char

我只是想看看下面是否有效。我想取整數7並把它變成字符'7'。這是否允許:

int digit = 7; 
char code = (char) digit; 

預先感謝您的幫助!

+1

整型是不一樣的INT和性格是不一樣的字符。也試試看看它是否有效。 –

+0

'(char)('0'+ digit)'將起作用 – fge

+0

這可能對您有用:http://stackoverflow.com/questions/17984975/convert-int-to-char-in-java – Thibstars

回答

2

此轉換是允許的,但結果不會是你所期望的,因爲char 7 is the bell character whereas '7' is 55 (0x37)。由於數字字符的順序是從'0'480x30)開始,只需添加'0',然後將結果作爲char進行投射。

char code = (char) (digit + '0'); 

您也可以看看的Unicode characters,其中可打印的ASCII字符相同的代碼。

+0

Argh,爲什麼在有Unicode時指向ASCII而Java是Unicode呢? :p – fge

+0

看到我的答案,爲什麼引用ascii是imho不是一件好事 – fge

0

更容易是做

String s = "0" + digit; 
char t = s.charAt(0); 
+1

這可能不是你想做的,除非你想要每次都得到char''0'。 – Keppil

+0

'String s =「」+ digit; char t = s.charAt(0);'會工作 – andy

0

如果數字是0之間和9:

int digit = 7; 
char code = (char)(((int)'0')+digit); 
+0

不需要明確地將''0'擴展爲'int'。 –

0

'7' is Unicode code point U+0037.由於它是在Basic Multiligual Plane的碼點,並且由於char是一個UTF-16代碼單元,並且該平面中的Unicode代碼點和UTF-16代碼單元之間存在一對一映射,您可以依靠這樣的:

(char) ('0' + digit) 

不認爲'7'爲ASCII 55,因爲防止char有很好的理解......欲瞭解更多詳情,請參閱here

0

沒有。該char'7'可以從int7在以下方面獲得:

int digit = 7; 
char code = Integer.toString(digit).charAt(0); 
code = Character.forDigit(digit, 10);