2010-04-21 22 views

Respuesta

16

¿El char[] contiene los caracteres Unicode que componen los dígitos del número? En ese caso, basta con crear una cadena de la char[] y utilizar Integer.parseInt:

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

Otra forma con más rendimiento:

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

Usted puede simplemente reemplazar el bucle interno con 'resultado * = 10; '. –

+0

¿Quiere decir reemplazar 'digit * = 10;' a 'result * = 10;'? –

+1

No, puede deshacerse del bucle interno * entero * ('for (int j = ...') y reemplazar las tres líneas con 'resultado * = 10;'. –

10

Aún más rendimiento y un código más limpio (y no hay necesidad de asignar un nuevo objeto de cadena):

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)); 

funciona esto también.

0

Se puede utilizar como esto para conseguir uno por uno a int

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

Bueno, se puede tratar incluso este

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);