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();
}
}