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

Desafio:Aprobacion De Asignaturas

Configuración regional: Usamos useLocale(Locale.US) para forzar el uso del punto como separador decimal.

Manejo de errores: Implementamos un bloque try-catch para capturar entradas inválidas.

Formato de salida: Usamos printf con %.2f para mostrar siempre 2 decimales.

Lógica mejorada: Simplifiqué las condiciones del if-else para hacerlas más legibles.

Validación robusta: El programa ahora insiste hasta que reciba un número válido.

Si el problema persiste, podría deberse a:

Que estés ingresando el número con coma (debes usar punto)

Que estés ingresando texto en lugar de números

Que haya algún problema con tu entorno de desarrollo

import java.util.Scanner;
import java.util.Locale;

public class PromedioDeAprobacion {
    public static void main(String[] args) {
        // Configurar el Scanner para usar punto decimal
        Scanner scanner = new Scanner(System.in).useLocale(Locale.US);

        // Mostrar mensaje de bienvenida
        System.out.println("¡Bienvenido! Aquí podrás saber si aprobaste o no.");
        System.out.println("-----------------------------------------------");

        // Solicitar el promedio al usuario con manejo de errores
        double promedio = 0;
        boolean entradaValida = false;

        while (!entradaValida) {
            System.out.print("Por favor, ingresa tu promedio final (usar punto decimal): ");
            try {
                promedio = scanner.nextDouble();
                entradaValida = true;
            } catch (Exception e) {
                System.out.println("Error: Debes ingresar un número válido (ejemplo: 7.5)");
                scanner.nextLine(); // Limpiar el buffer
            }
        }

        // Evaluar la situación del estudiante
        if (promedio >= 7.0) {
            System.out.printf("¡Felicidades! Estás APROBADO con un promedio de %.2f%n", promedio);
        } else if (promedio >= 5.0) {
            System.out.printf("Estás en RECUPERACIÓN con un promedio de %.2f%n", promedio);
        } else if (promedio >= 0) {
            System.out.printf("Lo siento, estás REPROBADO con un promedio de %.2f%n", promedio);
        } else {
            System.out.println("Promedio no válido. Debe ser un número positivo.");
        }

        // Cerrar el Scanner
        scanner.close();
    }
}
1 respuesta

Hola John, espero que estés bien

Gracias por compartir tu código y la descripción del problema. Parece que estás en el camino correcto para resolver el desafío de determinar la aprobación de asignaturas. Tu código ya implementa la lógica necesaria para evaluar la situación del estudiante según el promedio ingresado.

Aquí hay algunas sugerencias para asegurarte de que tu programa funcione según lo esperado:

  1. Configuración Regional: Ya estás usando useLocale(Locale.US) para asegurarte de que el punto se use como separador decimal, lo cual es perfecto para evitar problemas con el formato numérico.

  2. Manejo de Errores: Has implementado un bloque try-catch para manejar entradas inválidas, lo cual es excelente para evitar que el programa falle si el usuario ingresa algo que no es un número.

  3. Formato de Salida: Usar printf con %.2f es una buena práctica para mostrar siempre dos decimales, lo que hace que la salida sea consistente y clara.

  4. Lógica de Condiciones: Tu lógica if-else parece estar alineada con las reglas proporcionadas en la actividad. Asegúrate de que los mensajes de salida coincidan con los ejemplos proporcionados en el ejercicio.

  5. Validación de Entrada: Ya estás insistiendo hasta recibir un número válido, lo cual es una buena práctica para asegurar que el programa funcione correctamente sin interrupciones.

Con estos ajustes, tu programa debería cumplir con los requisitos del ejercicio. Espero que estas sugerencias te ayuden a avanzar en tu aprendizaje de Java.

¡Espero haber ayudado y buenos estudios!