Autor Tema: Necesito ayuda con una tarea la cual no he hallado respuesta  (Leído 2419 veces)

Jp123

  • Sin experiencia
  • *
  • Mensajes: 4
    • Ver Perfil
Necesito ayuda con una tarea la cual no he hallado respuesta
« 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);
           
           
        }
    }
           


« Última modificación: 23 de Noviembre 2022, 02:51 por Jp123 »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 989
    • Ver Perfil
Re: Necesito ayuda con una tarea la cual no he hallado respuesta
« Respuesta #1 en: 23 de Noviembre 2022, 17:09 »
Hola.

El principal error es usar un boolean para leer la calificación.
Código: [Seleccionar]
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:
Código: [Seleccionar]
    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:
Citar
if(calificacion=3.5<=4.0)
Eso no es interpretable por el compilador, debería ser:
Citar
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.

Código: [Seleccionar]
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
Código: [Seleccionar]
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.
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

Jp123

  • Sin experiencia
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Necesito ayuda con una tarea la cual no he hallado respuesta
« Respuesta #2 en: 23 de Noviembre 2022, 20:49 »
Muchísimas gracias @Kabuto, realmente me impresiona la facilidad con la que pudiste responder dicha tarea. Eres impresionante.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".