2010-04-21 100 views

回答

16

char[]是否包含組成數字位數的Unicode字符?在這種情況下,簡單地從char[]創建一個字符串和使用的Integer.parseInt:

char[] digits = { '1', '2', '3' }; 
int number = Integer.parseInt(new String(digits)); 
1

與更高性能的另一種方式:

char[] digits = { '1', '2', '3' }; 

int result = 0; 
for (int i = 0; i < chars.length; i++) { 
    int digit = ((int)chars[i] & 0xF); 
    for (int j = 0; j < chars.length-1-i; j++) { 
     digit *= 10; 
    } 
    result += digit; 
} 
+1

你可以簡單地用'結果*取代你的內循環= 10; '。 – 2012-07-16 13:35:37

+0

你的意思是將'digit * = 10;'替換爲'result * = 10;'? – 2012-07-18 11:39:20

+1

不,你可以去掉*整個內部循環('for(int j = ...'),並用'result * = 10;'替換所有的三行。 – 2012-07-18 11:49:57

10

甚至更​​高的性能和更乾淨的代碼(沒有需要分配一個新的String對象):

int charArrayToInt(char []data,int start,int end) throws NumberFormatException 
{ 
    int result = 0; 
    for (int i = start; i < end; i++) 
    { 
     int digit = (int)data[i] - (int)'0'; 
     if ((digit < 0) || (digit > 9)) throw new NumberFormatException(); 
     result *= 10; 
     result += digit; 
    } 
    return result; 
} 
6
char[] digits = { '0', '1', '2' }; 
int number = Integer.parseInt(String.valueOf(digits)); 

這也適用。

0

您可以使用像這樣得到逐一詮釋

char[] chars = { '0', '1', '2' }; 
int y=0; 
for (int i = 0; i < chars.length; i++) { 
    y = Integer.parseInt(String.valueOf(chars[i])); 
    System.out.println(y); 
} 
0

那麼,你可以嘗試連這

char c[] = {'1','2','3'}; 
    int total=0,x=0,m=1; 
    for(int i=c.length-1;i>=0;i--) 
    { 
     x = c[i] - '0'; 
     x = x*m; 
     m *= 10; 
     total += x; 
    } 
    System.out.println("Integer is " + total);