miércoles, 8 de julio de 2026

Determinar la frecuencia de dígitos de un número en Java

Código del ejercicio:

package ejercicio;

import java.util.Scanner;

public class Ejercicio {

    public static void main(String[] args) {
        int c = 0, aux = 0, r = 0, fd = 0, n;
        Scanner sc = new Scanner(System.in);
        System.out.print("Ingrese un número: ");
        n = sc.nextInt();
        while(c <= 9){
            aux = n;
            fd = 0;
            while(aux > 0){
                r = aux % 10;
                if(r == c){
                    fd++;
                }
                aux = (aux - r) / 10;
            }
            if(fd > 0){
                System.out.println("La frecuencia de " + c + " es: " + fd);
            }
            c++;
        }
    }

}

Definición de los códigos del ejercicio:

import java.util.Scanner; --> Importación explícita de Scanner.
Scanner sc = new Scanner(System.in); --> objeto de Scanner con nombre sc.
Scanner --> clase Scanner nos permite ingresar datos por teclado.
new --> palabra reservada que instancia un objeto de la clase Scanner.
System.in --> parámetro que indica de donde proceden los datos, en este caso del teclado.
System.out.println() --> imprime el texto en la consola y el cursor permanece al comienzo de la siguiente línea en la consola.
int --> dato entero de 32 bits.
nextInt() --> lee un número entero desde consola (teclado).
while --> el ciclo while recorre un bloque de código siempre que una condición específica sea verdadera.
<= --> el operador menor o igual ( <= ) devuelve true si el operando izquierdo es menor o igual que el operando derecho, y en false caso contrario.
> --> el operador mayor que ( > ) devuelve true si el operando izquierdo es mayor que el operando derecho.
% --> el operador de modulo ( % ) devuelve el resto de la división.
== --> el operador de igualdad ( == ) regresa true si sus operandos son iguales, false en caso contrario.
if --> use if para especificar un bloque de código que se ejecutará, si una condición especificada es verdadera.
++ --> el operador de incremento ( ++ ) incrementa (suma uno a) su operando y devuelve un valor.
+ --> el operador ( + ) concatena variables de cadena.

Explicación del Código:

Este programa solicita al usuario un número entero y cuenta cuántas veces aparece cada dígito (del 0 al 9). Al finalizar, muestra únicamente los dígitos que están presentes en el número junto con la cantidad de veces que se repiten.

1. Declaración de variables

  • int c = 0; → Guarda el dígito que se está buscando. Empieza en 0 y termina en 9.
  • int aux = 0; → Guarda una copia del número para poder recorrerlo sin modificar el original.
  • int r = 0; → Almacena el último dígito obtenido del número.
  • int fd = 0; → Cuenta cuántas veces aparece el dígito que se está buscando.
  • int n; → Guarda el número ingresado por el usuario.

2. Crear el Scanner

Se crea un objeto Scanner para poder leer el número que escribe el usuario desde el teclado.

3. Solicitar el número

Se muestra el mensaje "Ingrese un número:" y luego el programa almacena el valor introducido en la variable n.

4. Recorrer los dígitos del 0 al 9

El ciclo while(c <= 9) revisa uno por uno todos los dígitos posibles:

  • 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

Para cada uno de ellos, el programa contará cuántas veces aparece dentro del número.

5. Copiar el número

Antes de comenzar el conteo, el programa hace:

  • aux = n; → Copia el número original.
  • fd = 0; → Reinicia el contador de frecuencia.

Esto permite volver a recorrer el número desde el principio para buscar otro dígito.

6. Recorrer cada cifra del número

El ciclo while(aux > 0) analiza el número cifra por cifra hasta que ya no queden dígitos.

7. Obtener el último dígito

La instrucción:

r = aux % 10;

Obtiene el último dígito del número.

Ejemplo:

  • 4825 → obtiene 5.
  • 731 → obtiene 1.
  • 90 → obtiene 0.

8. Comparar el dígito

Si el último dígito es igual al valor almacenado en c, significa que se encontró una coincidencia.

Entonces se ejecuta:

fd++;

Esto aumenta en uno el contador de frecuencia.

9. Eliminar el último dígito

La instrucción:

aux = (aux - r) / 10;

Elimina el último dígito para continuar revisando el siguiente.

Ejemplo:

  • 4825 → 482
  • 482 → 48
  • 48 → 4
  • 4 → 0

10. Mostrar la frecuencia

Cuando termina de revisar todo el número, el programa verifica:

if(fd > 0)

Si el contador es mayor que cero, significa que ese dígito apareció en el número y se muestra su frecuencia.

Ejemplo:

La frecuencia de 2 es: 3
La frecuencia de 5 es: 1

11. Pasar al siguiente dígito

La instrucción:

c++;

Hace que el programa busque el siguiente dígito hasta llegar al 9.

Resumen del funcionamiento

  1. Se ingresa un número.
  2. El programa busca cuántas veces aparece el 0.
  3. Luego cuenta el 1.
  4. Después el 2.
  5. Continúa con todos los dígitos hasta el 9.
  6. Finalmente muestra únicamente los dígitos que aparecen y su cantidad de repeticiones.

No hay comentarios.:

Publicar un comentario

Mostrar los x primeros números de la siguiente serie: 2,3,6,7,14,15,30,31,62,63,... en Java

Código del ejercicio: package ejercicio; import java.util.Scanner; public class Ejercicio {     public static void main...

Copyright ©2025 Ejercicios de programación. Todos los derechos reservados. ❤️