Obtener todos los dígitos de un numero en Java

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.

Compartir

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *