2014-09-24 43 views
4

我知道這可能是一個基本問題。但我想說清楚。 如果我有一個值爲'9'的java char c,我可以通過以下操作將它轉換爲int: c - '0'? 我曾經玩這個,從來沒有問題,但有人告訴它是錯的?爲什麼?Java Char到Integer

+1

''11''不是字符。 – SLaks 2014-09-24 00:29:20

+2

這不是「錯誤」。有些人可能會認爲它是不好的風格,但是由於Java被指定爲使用Unicode來進行字符編碼,它將始終工作(假設'c'總是一個十進制數字字符)。 – 2014-09-24 00:37:21

回答

5

我不認爲這是錯誤的,你可以做到這一點。

int x = '9' - '0'; 

但是,如果你還希望它爲十六進制字符「A」 = 10,「B」 = 11等工作,你可以做這樣的

int x = Character.getNumericValue('9'); 

編輯:基於其他答案在這個崗位 Character.getNumericValue將一路真正去「Z」 = 35,所以,如果你想成爲安全使用

int x = Character.digit('9', 10); // for base 10 
int x = Character.digit('9', 16); // for base 16 
int x = Character.digit('B', 16); // for base 16 
+1

你的意思是「9」 - 「0」 – ericbn 2014-09-24 00:52:54

5

是的,你可以。但是,我會強烈建議您使用Character.digit(char, int)(其中int基數),像

char ch = '9'; 
int i = Character.digit(ch, 10); 
System.out.printf("ch = %c, i = %d%n", ch, i); 

唯一的問題(S)我看到你們的做法是,它是一個小更復雜,你應該驗證範圍

if (ch >= '0' && ch <= '9') 
+1

+1指向正確的API。但是,如果可以通過其他方式建立驗證,那麼在代碼中'c'總是小數點。 – 2014-09-24 00:41:20