Java - notas

 
Vista:
sin imagen de perfil

notas

Publicado por Diego (2 intervenciones) el 12/10/2022 17:30:11
He estado intentando encontrar el problema con la nota menor porque no se logra imprimir, no entiendo como lograr que funcione, es lo único que me falta

case 5:
-----------------System.out.println("");
-----------------System.out.println("---Notas Estudiantes---");
-----------------Scanner sc=new Scanner(System.in);
-----------------int nota, cantAlumnos, suma=0, promedio=0;
-----------------int aprobados=0, reprobados=0;
-----------------int notaMayor=0, notaMenor=0;

-----------------System.out.print("Ingrese la cantidad de alumnos: ");
-----------------cantAlumnos= sc.nextInt();

-----------------int i=1;
-----------------while(i<=cantAlumnos){
--------------------System.out.println("Alumno "+i);
--------------------System.out.print("Ingrese la nota del estudiante: ");
--------------------nota= sc.nextInt();
--------------------suma += nota;
--------------------promedio = (suma/cantAlumnos);

--------------------if (nota>=70){
-----------------------aprobados++;
}
--------------------else if (nota<70) {
-----------------------reprobados++;
}
--------------------i++;

--------------------if (nota>=notaMayor){
-----------------------notaMayor=nota;
}
--------------------if ((nota>=notaMenor)&&(nota<notaMayor)){
-----------------------notaMenor=nota;
}
}

-----------------System.out.println("");
-----------------System.out.println("Cantidad de alumnos aprobados es: "+aprobados);
-----------------System.out.println("Cantidad de alumnos reprobados es: "+reprobados);
-----------------System.out.println("Promedio de notas es: "+promedio);
-----------------System.out.println("La nota mayor es: "+notaMayor);
-----------------System.out.println("La nota menor es: "+notaMenor);


-----------------System.out.print("\n");
-----------------break;

PD: los -------- es para mayor facilidad de lectura del codigo, sino queda todo pegado al lado izq

menor
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

notas

Publicado por Kabuto (1381 intervenciones) el 12/10/2022 19:00:19
Hay dos problemas.
Primero, la pregunta es incorrecta:
1
2
if ((nota>=notaMenor)&&(nota<notaMayor)){
    notaMenor=nota;

La pregunta correcta es "si nota es menor que notaMenor".
Solo eso.
1
2
if (nota < notaMenor){
    notaMenor=nota;

El segundo problema, sin embargo, hace que esta pregunta sea ineficiente.
Y este problema es que notaMenor la inicializas a valor 0

1
int notaMayor=0, notaMenor=0;

Por tanto, esta variable ya comienza con el menor valor posible, y así nunca va a poder detectar cuál es la menor nota de las que va a introducir el usuario.
Para evitar esto, lo tienes que inicializar con un valor mayor, uno que supere la máxima nota posible.
Si por ejemplo, la mayor nota posible es 100, pues puedes inicializarlo a 101 (o cualquier otro número superior)

1
int notaMayor=0, notaMenor=101;

En otros programas, tendrás ocasiones en las que no puedes saber cuál es el máximo número que podría llegar a introducirse. En estos casos se suele inicializar al máximo valor que admite el tipo de dato con el que estamos trabajando.
En este caso, como es un int, el máximo valor posible es 2,147,483,647
Pero no hace falta memorizarlo ni siquiera escribirlo, la clase Integer ya nos proporciona una constante para que la usemos en casos como este:
1
int notaMayor=0, notaMenor=Integer.MAX_VALUE;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

notas

Publicado por Diego (2 intervenciones) el 12/10/2022 20:18:23
Pura vida, ya funciona, gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar