2010-10-16 104 views
26

的「Java」的方式:什麼是轉換字符(數字)來考慮下面的代碼整數

char x = '5'; 
    int a0 = x - '0'; // 0 
    int a1 = Integer.parseInt(x + ""); // 1 
    int a2 = Integer.parseInt(Character.toString(x)); // 2 
    int a3 = Character.digit(x, 10); // 3 
    int a4 = Character.getNumericValue(x); // 4 
    System.out.printf("%d %d %d %d %d", a0, a1, a2, a3, a4); 

(第4版記:casablanca

你認爲什麼是「最佳方式「將char轉換爲int? (「最佳方式」〜= 慣用方式

我們不轉換炭的實際數值,但表示的值。

例如:

convert('1') -> 1 
convert('2') -> 2 
.... 
+2

我很確定有人來自那些古老的C和帕斯卡爾的東西,就像我一樣,會投票給第一個選項。 – 2010-10-16 17:59:58

+1

@Nikita:我確實來自那些「古老的C和帕斯卡爾的東西」,但除非表演絕對至關重要,否則我寧願比'x - '0'更富有表現力的方式。 – casablanca 2010-10-16 18:11:27

回答

6

第一種方法。它是最輕量級和最直接的,並映射到您可能在其他(較低級別)語言中執行的操作。當然,它的錯誤處理還有一些不足之處。

14

我強烈希望Character.digit

+1

請解釋推理 – 2017-12-04 22:59:38

2

如果速度很關鍵(而不是驗證,您可以將結果合併) 例如,

char d0 = '0'; 
char d1 = '4'; 
char d2 = '2'; 
int value = d0 * 100 + d1 * 10 + d2 - '0' * 111; 
+1

我喜歡''0'* 111'值:-) – dedek 2015-05-11 12:51:30

-1

轉換爲ASCII然後減去48

(int) '7' would be 55 
((int) '7') - 48 = 7 
((int) '9') - 48 = 9 
-2

如果您想通過 「刮」 來做到這一點,那麼你可以使用這個,例如:

String str = "98"; 
int number = 0; 

number = str.charAt(0) - '0'; 
number += str.charAt(1) - '0'; 

System.out.println(number); 

控制檯:98

這樣做是使用分配給的ASCII值'9'和'8'(分別爲57和56),那麼如果你減去零「char」'0',則從每個數字char減去48,這給出了等效的int。因此,因爲char'9'的ASCII值爲57 ... 57 - 48 = 9。

+0

該示例將打印「17」,所以這是錯誤的。 – Zorgatone 2017-12-31 15:02:27

+0

@Zorgatone,你期待的是什麼數字?這成功地將字符串中的字符更改爲整數,然後將它們加在一起,即等於17.您可以對整數進行任何您想要的操作,但此示例添加了它們。 – Azurespot 2018-01-01 20:07:32

-2

要成功解析字符而不需要使用易出錯的額外循環,可以將字符轉換爲字符串然後parseInt它:

(Integer.parseInt(String.valueOf(invalue.charAt(i)))) 
相關問題