¿Cómo obtener los dígitos separados de un número int?

Resuelto Edy Moore asked hace 14 años • 0 respuestas

Tengo números como 1100, 1002, 1022, etc. Me gustaría tener los dígitos individuales, por ejemplo, para el primer número 1100 quiero tener 1, 1, 0, 0.

¿Cómo puedo obtenerlo en Java?

Edy Moore avatar Aug 02 '10 22:08 Edy Moore
Aceptado

Para hacer esto, utilizará el %operador (mod).

int number; // = some int

while (number > 0) {
    print( number % 10);
    number = number / 10;
}

El operador mod le dará el resto de la división int de un número.

Entonces,

10012 % 10 = 2

Porque:

10012 / 10 = 1001, remainder 2

Nota: Como señaló Paul, esto le dará los números en orden inverso. Tendrás que colocarlos en una pila y sacarlos en orden inverso.

Código para imprimir los números en el orden correcto:

int number; // = and int
LinkedList<Integer> stack = new LinkedList<Integer>();
while (number > 0) {
    stack.push( number % 10 );
    number = number / 10;
}

while (!stack.isEmpty()) {
    print(stack.pop());
}
jjnguy avatar Aug 02 '2010 15:08 jjnguy

Conviértalo a Stringy use String#toCharArray()o String#split().

String number = String.valueOf(someInt);

char[] digits1 = number.toCharArray();
// or:
String[] digits2 = number.split("(?<=.)");

En caso de que ya esté en Java 8 y desee realizar algunas operaciones agregadas después, considere usarlo String#chars()para aprovecharlo IntStream.

IntStream chars = number.chars();
BalusC avatar Aug 02 '2010 15:08 BalusC