Foros aprenderaprogramar.com
Aprender a programar => De todo un poco... => Mensaje iniciado por: Jp123 en 23 de Noviembre 2022, 02:48
-
El lenguaje es Java. Estoy iniciando en esto de la programación y he intentado hacer este ejercicio de muchas maneras, pero aún no le hallo respuesta.
Estaría muy agradecida si me ayudaran. Gracias :)
La calificación de un estudiante es E si nota es mayor que 4.5, B si está entre 4.0 y 4.5, R si está entre 3.5 y 4.0, M si está entre 3.0 y 3.5, y I si es menor de 3.0. No se incluye el límite inferior del intervalo. Realizar un programa en Java que implemente un método para identificar la calificación en letra del estudiante, la calificación debe de ser ingresada por teclado por el usuario en números.
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Main.java to edit this template
*/
//La calificación de un estudiante es E si nota es mayor que 4.5,B si está entre 4.0 y 4.5, R si está entre 3.5 y 4.0, M si está entre 3.0 y 3.5, y I si es menor de 3.0. No se incluye el límite inferior del intervalo. Realizar un programa en Java que implemente un método para identificar la calificación en letra del estudiante, la calificación debe de ser ingresada por teclado por el usuario en números//
package datos_alumno;
import javax.swing.JOptionPane;
/**
*
* @author INTEL
*/
public class Datos_alumno{
String nombre;
Boolean calificacion;
public void pideDatos()
{
nombre=JOptionPane.showInputDialog("Ingrese el nombre: ");
calificacion=Boolean.parseBoolean(JOptionPane.showInputDialog("Ingrese la calificacion: "));
}
public void estado()
{
if(calificacion=4.5 <=5.0)
{
JOptionPane.showMessageDialog(null,"Nota: E");
}
else
{
}
}
public void estado2()
{
if(calificacion =4.0<=4.5)
{
JOptionPane.showMessageDialog(null,"Nota: B");
}
else
{
}
}
public void estado3()
{
if(calificacion=3.5<=4.0)
{
JOptionPane.showMessageDialog(null,"Nota: R");
}
else
{
JOptionPane.showMessageDialog(null,"Nota: E");
JOptionPane.showMessageDialog(null,"Nota: B");
JOptionPane.showMessageDialog(null,"Nota: M");
JOptionPane.showMessageDialog(null,"Nota: L");
}
}
public void estado4()
{
if(calificacion=3.0<=3.5)
{
JOptionPane.showMessageDialog(null,"Nota: M");
}
else
{
JOptionPane.showMessageDialog(null,"Nota: E");
JOptionPane.showMessageDialog(null,"Nota: B");
JOptionPane.showMessageDialog(null,"Nota: R");
JOptionPane.showMessageDialog(null,"Nota: L");
}
}
public void estado5()
{
if(calificacion=1.0<=3.0)
{
JOptionPane.showMessageDialog(null,"Nota: L");
}
else
{
JOptionPane.showMessageDialog(null,"Nota: e");
JOptionPane.showMessageDialog(null,"Nota: B");
JOptionPane.showMessageDialog(null,"Nota: M");
JOptionPane.showMessageDialog(null,"Nota: R");
}
}
public void muestreDatos()
{
JOptionPane.showMessageDialog(null,"El nombre del estudiante es: "+nombre);
JOptionPane.showMessageDialog(null,"La calificacion es: "+calificacion);
}
}
-
Hola.
El principal error es usar un boolean para leer la calificación.
Boolean calificacion;Un boolean solo tiene dos valores posibles: true o false (verdadero o falso)
No nos sirve para leer calificaciones. En este caso, debemos usar el tipo double o float, ambos sirven para leer números naturales con decimales que es lo apropiado para leer calificaciones.
Luego, no se por qué hay tantos métodos y en cualquier caso no tienen una buena lógica.
Ejemplo:
public void estado3()
{
if(calificacion=3.5<=4.0)
{
JOptionPane.showMessageDialog(null,"Nota: R");
}
else
{
JOptionPane.showMessageDialog(null,"Nota: E");
JOptionPane.showMessageDialog(null,"Nota: B");
JOptionPane.showMessageDialog(null,"Nota: M");
JOptionPane.showMessageDialog(null,"Nota: L");
}
}Ahí la lógica seguida dice:
Si se cumple la condición,
mostramos mensaje que la nota es R,
si no se cumple,
mostramos un mensaje que la nota es E, otro mensaje que la nota es B,
otro mensaje que la nota es M y otro mensaje que la nota es L
No tiene sentido, y de todos modos, hay un error de sintaxis en la condición:
if(calificacion=3.5<=4.0)
Eso no es interpretable por el compilador, debería ser:
if(calificacion >= 3.5 && calificacion <= 4.0)
Este ejercicio, puede resolverse con el siguiente código.
Lo he hecho directamente dentro de un método main(), no veo la necesidad de crear una clase con multitud de métodos.
import javax.swing.JOptionPane;
public class Datos_alumno{
public static void main(String[] args) {
//Peticion datos
String nombre = JOptionPane.showInputDialog(null, "Nombre Alumno:");
double calificacion = Double.parseDouble(JOptionPane.showInputDialog(null, "Calificacion:"));
//Evaluacion
char letra = ' ';
if (calificacion > 4.5)
letra = 'E';
else if (calificacion >= 4.0)
letra = 'B';
else if (calificacion >= 3.5)
letra = 'R';
else if (calificacion >= 3.0)
letra = 'M';
else
letra = 'I';
//Resultado
JOptionPane.showMessageDialog(null, "Alumno: " + nombre + "\nNota: " + letra);
}
}
Fíjate en como evaluamos la nota para decidir la letra.
Empezamos preguntando si la nota es mayor que 4.5
if (calificacion > 4.5)Si se cumple, pues la letra es 'E'.
Si no se cumple, pues de momento ya sabemos que la nota es menor o igual que 4.5, así que esto no hace falta preguntarlo en la siguiente condición. Solo preguntaremos si es mayor o igual que 4.0.
Si se cumple, pues letra es 'B'.
Si no se cumple, ya sabemos que es menor que 4.0, así que en la siguiente condición solo es necesario preguntar si es mayor o igual que 3.5.
Y así sucesivamente.
Pruébalo y pregunta lo que no entiendas.
Un saludo.
-
Muchísimas gracias @Kabuto, realmente me impresiona la facilidad con la que pudiste responder dicha tarea. Eres impresionante.