¿Cómo obtener los dígitos separados de un número int?
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?
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());
}
Conviértalo a String
y 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();