Hola a todos, hoy os voy a explicar como podemos obtener todos los dígitos de un numero en Java.
Para cierto algoritmos, necesitaremos obtener los dígitos de un número. Para ello os proporciono una función que dado un número nos devuelve los dígitos de ese número.
La funcionalidad seria la siguiente:
- Contamos el número de cifras que tiene el número y creamos un array con ese tamaño. Otra opción es de hacerlo con un ArrayList.
- Si el número es 0, creamos un array con una posición y metemos el 0.
- Como nuestro numero puede ser negativo, guardaremos en otra variable la misma pero pasándolo a positivo.
- Usamos una variable a la que dividiremos entre 10, la llamaremos copia.
- Para sacar el digito, con el numero original le restamos la copia del numero multiplicado por 10.
- Lo guardamos en el array que hemos creado antes.
- Actualizamos el numero original con la copia del número.
- Así hasta que el numero original sea 0
Para el contar el número de cifras, tenemos un tutorial donde lo explicamos:
https://www.discoduroderoer.es/contar-el-numero-de-digitos-en-java
La función es la siguiente:
public static int[] devuelveDigitos(int numero) { // Si el numero es 0 // Creamos un array de una posicion if (numero == 0) { int digitos[] = {0}; return digitos; } // Creamos un array con tantas posiciones como cifras tiene el numero int digitos[] = new int[cuentaCifras(numero)]; int digito; // Pasamos el numero a positivo int numeroOriginal = Math.abs(numero); for (int i = 0, j = digitos.length - 1, copiaNumero = numeroOriginal; numeroOriginal > 0; i++, j--) { // Divimos la copia entre 10 copiaNumero /= 10; // Obtenemos el digito, numero original menos la copia multiplicada por 10 digito = numeroOriginal - (copiaNumero * 10); // guardamos el digito en el array digitos[j] = digito; // Actualizamos el numero original numeroOriginal = copiaNumero; } return digitos; }
Vamos a probar el codigo:
public static void main(String[] args) { System.out.println("---- 123 ----"); int[] d = devuelveDigitos(123); for (int i = 0; i < d.length; i++) { System.out.println(d[i]); } System.out.println("---- 0 ----"); d = devuelveDigitos(0); for (int i = 0; i < d.length; i++) { System.out.println(d[i]); } System.out.println("---- -123 ---- "); d = devuelveDigitos(-123); for (int i = 0; i < d.length; i++) { System.out.println(d[i]); } }
Veamos la ejecución:
Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.
Deja una respuesta