miércoles, 8 de julio de 2026

Pedir un número y luego ordenar de menor a mayor los dígitos en Java

Código del ejercicio:

package ejercicio;

import java.util.Scanner;

public class Ejercicio {

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

}

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.print() --> imprime el texto en la consola y el cursor permanece al final del texto en la consola.
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.

Explicación del Código:

Objetivo del programa

Este programa solicita un número entero al usuario y luego muestra sus dígitos ordenados de menor a mayor.

Por ejemplo:

  • Entrada: 583421
  • Salida: 123458

Explicación de las variables

Variable Función
ac Va formando el número ordenado.
c Representa el dígito que se está buscando (0 hasta 9).
r Guarda el último dígito del número.
aux Es una copia del número para recorrerlo sin modificar el original.
n Es el número ingresado por el usuario.
Scanner sc Permite leer el número desde el teclado.

Explicación del código

int ac = 0, c = 0, r = 0, aux = 0, n;

Se declaran todas las variables que utilizará el programa.


Scanner sc = new Scanner(System.in);

Crea el objeto que permite leer datos desde el teclado.


System.out.print("Ingrese un número: "); n = sc.nextInt();

Solicita al usuario un número y lo guarda en la variable n.


while(c <= 9)

Este ciclo recorre todos los dígitos posibles, desde el 0 hasta el 9.

Primero busca todos los ceros, luego los unos, después los doses y así sucesivamente hasta llegar al nueve.


aux = n;

En cada vuelta se hace una copia del número original para poder recorrerlo sin perder su valor.


while(aux > 0)

Este ciclo recorre uno por uno todos los dígitos del número.


r = aux % 10;

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

Ejemplo:

  • 548 % 10 = 8
  • 321 % 10 = 1

if(r == c)

Compara si el dígito encontrado es igual al número que se está buscando.

Por ejemplo, si c = 3, solamente guardará los dígitos que sean 3.


ac = (ac * 10) + r;

Si el dígito coincide, se agrega al final del número resultado.

Ejemplo:

  • ac = 12
  • r = 3
  • Nuevo ac = 123

aux = (aux - r) / 10;

Elimina el último dígito del número para seguir revisando el siguiente.

Ejemplo:

  • 548 → 54
  • 54 → 5
  • 5 → 0

c++;

Pasa al siguiente dígito que debe buscar.

El programa buscará en este orden:

0 → 1 → 2 → 3 → ... → 9


System.out.println(ac);

Finalmente muestra el número con sus dígitos ordenados de menor a mayor.

Ejemplo de ejecución

Entrada

Ingrese un número: 583421

Proceso

El programa busca primero todos los 0, luego los 1, después los 2, los 3, los 4, los 5 y así sucesivamente hasta el 9.

Salida

123458
Resumen

El programa utiliza dos ciclos while. El primero recorre los dígitos del 0 al 9 y el segundo revisa cada dígito del número ingresado. Cada vez que encuentra el dígito que está buscando, lo agrega al resultado. De esta forma, los dígitos quedan ordenados automáticamente de menor a mayor, sin utilizar arreglos ni métodos de ordenamiento.

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. ❤️