Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Duda con resultado en consola con else

Este es mi codigo y si me arroja los resultados correctos en la consola, aplique un else para que encaso de que mi codigo no corriera bien me arrojara un "no" con el else. Mi duda es que cuando en la variable compraCliente pongo un valor entre 100 y 299.99, refiriendose a los dos primeros bloques de if, el else del final me arroja un "no" junto con el resultado. Quiero saber porque me arroja el "no" si el codigo esta corriendo bien.

public class TestDescuento {

    public static void main(String[] args) {

        double compraCliente = 250.0;

        if ( compraCliente >= 100.0 && compraCliente <= 199.9) {

            double descuento10 = (compraCliente * .10);
            compraCliente = (compraCliente - descuento10);
            
            System.out.println(compraCliente);

        } 
        if (compraCliente >= 200.0 && compraCliente <= 299.99) {
            
            double descuento15 = (compraCliente * .15); 
            compraCliente = (compraCliente - descuento15);
            
            System.out.println(compraCliente);
        }
        if (compraCliente >= 300.0) {
            
            double descuento20 = compraCliente *.20;
            compraCliente = compraCliente - descuento20;
            
            System.out.println(compraCliente);
            
        }
        else {
            System.out.println("no");
        }
        
        
    }

}

Adjunto la imagen de la consola Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

1 respuesta

¡Hola Bernardo!

En tu código, el problema es que el último "else" solo está relacionado con el último "if" que verifica si la variable "compraCliente" es mayor o igual a 300.0. Si la variable "compraCliente" es menor a 100.0, no se imprimirá nada en la consola, pero si es mayor o igual a 100.0 y menor a 200.0 o mayor o igual a 200.0 y menor o igual a 299.99, se imprimirá el resultado correspondiente y luego se imprimirá "no" porque el último "else" está relacionado solo con el último "if".

Para solucionar esto, debes usar "else if" en lugar de "if" para los bloques de código que verifican si "compraCliente" está en un rango específico. De esta manera, solo se ejecutará un bloque de código y no se ejecutará el "else" relacionado con los bloques que no se cumplan. Aquí te muestro cómo quedaría tu código con los cambios necesarios:

public class TestDescuento {

    public static void main(String[] args) {

        double compraCliente = 250.0;

        if ( compraCliente >= 100.0 && compraCliente <= 199.9) {

            double descuento10 = (compraCliente * .10);
            compraCliente = (compraCliente - descuento10);
            
            System.out.println(compraCliente);

        } 
        else if (compraCliente >= 200.0 && compraCliente <= 299.99) {
            
            double descuento15 = (compraCliente * .15); 
            compraCliente = (compraCliente - descuento15);
            
            System.out.println(compraCliente);
        }
        else if (compraCliente >= 300.0) {
            
            double descuento20 = compraCliente *.20;
            compraCliente = compraCliente - descuento20;
            
            System.out.println(compraCliente);
            
        }
        else {
            System.out.println("no");
        }
        
        
    }

}

Espero que esto solucione tu problema. ¡Buenos estudios!