Ayuda con if anidados?

Hola a todos

Estoy haciendo un ejercicio de if anidados, el problema dice: dado 3 variables locales definidas como ints, escribe ifs para imprimirlos de forma ascendente. Incluso si cambiamos los valores de las 3 variables, deben de ser imprimidas en orden ascendente. Ejem: int a=12, int b=34, int c=6, debe imprimir: 6 12 34.
Esto es lo que llevo, el problema es que me esta imprimiendo ordenados como 3 veces, no se que estoy haciendo mal, ojala me puedan sacar de la duda?
gracias de antemano por contestar

public class Numeros {

    public static void main(String args[]) {
        int a = 25;
        int b = 100;
        int c = 1;

        //A es menor
        if ((a < b) && (a < c)) {
            System.out.println(a);
        }if(b < c){
            System.out.println(b);
            System.out.println(c);
        }else if (a > c){
            System.out.println(c);
            System.out.println(a);
            System.out.println(b);
        }
        //b es menor
        else if ((b < a) && (b < c)) {
            System.out.println(b);
        }if(c < b){
            System.out.println(c);
            System.out.println(a);
        }else if (b > a){
            System.out.println(a);
            System.out.println(b);
            System.out.println(c);

            //c es mayor
        } else if ((c < a) && (c < b)) {
            System.out.println(c);
        } if(b < c){
            System.out.println(b);
            System.out.println(a);
        }else if (c > a){
            System.out.println(a);
            System.out.println(c);
            System.out.println(b);
        }
       
       
         

    }
}

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de CharlieCorner

Checa tu lógica

Primero que nada tu lógica, si bien está acercándose a la solución, está incorrecta. ¿Has hecho una prueba de escritorio? El problema me suena a tarea, así que no podemos hacerte la misma, tengo de hecho ya corregido tu código, pero es muchísimo mejor si uno mismo llega a la respuesta por sí mismo, si bien no postearé el código correcto estaré más que encantado de ir resolviendo tus dudas poco a poco, así que empecemos por el principio:

Para que me entiendas mejor haz una prueba de escritorio. Sé que es muy tedioso, confieso que cuando yo empezaba a programar no era de mi particular agrado, pero con la práctica lo podrás hacer en la mente (no recomendable aún así). Así que ve por papel y ve ejecutando el código con el lápiz para ver qué está haciendo la computadora. Ya que lo hayas hecho regresas aquí a leer el sermón.

El primer error que salta a la vista: El tener tus if fuera de sus respectivas llaves cuando se ejecuta la línea, por ejemplo, de:

if ((a < b) &&  (a < c)) {
            System.out.println(a);
        }

Ejecuta esa instrucción e inmediatamente se va a la línea de:

}if(b < c){
            System.out.println(b);
            System.out.println(c);
        }else if (a > c){
            System.out.println(c);
            System.out.println(a);
            System.out.println(b);
        }

Cuando, supongo, tu lógica dice que una vez ejecutado la primera validación SI Y SOLO SI ella se cumple, entonces ejecutar el bloque que puse arriba, cuidado con la anidación de if.

Sugiero que lo pruebes, hagas tu prueba de escritorio y verás que también tienes unos cuantos errores más en tu forma de imprimir los valores cuando se cumple cada condición; no te digo cuáles son porque hasta que hagas una (o más bien, varias) pruebas de escritorio con valores diferentes, la solución vendrá a ti. No es el mejor algoritmo que podrías implementar para este ejercicio, pero si es como práctica, supongo que estará bien. Cualquier otra duda trataré de volver al thread y echarte la mano, pero por regla general, si es tarea, no podemos resolverla, pero sí podemos irte guiando para que solito tú resuelvas tu problema.

Saludos!

Gracias por tu respuesta,

Gracias por tu respuesta, de todos modos me gustaria que revisarás mi codigo si puedes porfavor. Segun yo ya esta bien, haz las correciones sugerencias que sean necesarias por favor.

public class Numeros {

    public static void main(String args[]) {
        int a = 12;
        int b = 34;
        int c = 6;

        //A es menor
        if ((a < b) && (a < c)) {
            System.out.print(a + " ");
            if(b < c){
                System.out.print(b + " ");
                System.out.print(c);
            }else{
                System.out.print(c+ " ");
                System.out.print(b);

            }
        }else if((b < a) && (b < c)){
            System.out.print(b + " ");
            if(c<a){
                System.out.print(c);
                System.out.print(a);
            }else{
                System.out.print(a+ " ");
                System.out.print(c);
            }
           
        }else if((c < a) && (c < b)){
            System.out.print(c + " ");
            if(b < a){
                System.out.print(b);
                System.out.print(" " +a);
            }else{
                System.out.print(a + " ");
                System.out.print(b);
            }
        }
     
       
         

    }
}

Muchas gracias por responder

Imagen de Shadonwk

espero te sirva

Imagen de CharlieCorner

@beckveg Exacto!

Exactamente beckveg, supongo que hiciste la prueba de escritorio, porque todo lo solucionaste de la manera apropiada (espero que no lo hayas copiado de ningún lado XD), como tip, en la línea de formato donde el orden quedaría como b-c-a, checa que agregues un espacio como lo hiciste en los demás casos.

else if((b < a) && (b < c)){
            System.out.print(b + " ");
            if(c<a){
                System.out.print(c);
                System.out.print(a);
            }else{
                System.out.print(a+ " ");
                System.out.print(c);
            }
           
        }

Justo ahí, supongo que sabrás como agregarle el espacio faltante para que salga bien. Por el resto está correcto, hasta donde hice las pruebas y vi el código lo depuraste correctamente, aunque nunca está de más hacer más pruebas y asegurarse que está correctamente implementado, luego hay bugs que se escapan a la vista o (más importante aún) a unas cuantas pruebas de escritorio. Ojalá te haya podido ayudar.

Muchas gracias por

Muchas gracias por responder, me servira para futuros ejercicios.

saludos

Muchas gracias por todo, la

Muchas gracias por todo, la verdad es que tengo que mejorar bastante por eso estoy haciendo ejercicios, y preguntando en foros he aprendido mucho.

saludos y gracias