Java - Notas y alumnos

 
Vista:
sin imagen de perfil
Val: 10
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Notas y alumnos

Publicado por Marco (7 intervenciones) el 24/02/2020 05:01:59
Buenas, soy nuevo en el tema de java y estaba tratando de realizar este ejercicio; programa que solicite una cantidad de niños matriculados en un curso, solicite el nombre y nota de cada uno de los alumnos. Al final muestre el nombre de todos los alumnos, el nombre de quien obtuvo la nota más alta, más baja y cuál es el promedio de notas.

Pero no logro resolverlo, podrían ayudarme. Tengo el código...
_______________________________

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package practicas;
 
import javax.swing.*;
import java.text.DecimalFormat;
 
public class Prueba1 {
 
    public void main(String[] args) {
        int total;
        int contadorCalif;
        int calificacion;
        double promedio;
        String cadenaCalif;
        String nombreAlumno;
        int Alumnos;
 
        int numAlum, i;
        double suma = 0, media;
 
        do {
            cadenaCalif = JOptionPane.showInputDialog(
                    "Escriba la cantidad de alumnos en su clase: ");
 
            calificacion = Integer.parseInt(cadenaCalif);
 
            numAlum = Integer.parseInt(cadenaCalif);
        } while (numAlum <= 0);
 
        do {
            nombreAlumno = JOptionPane.showInputDialog(
                    "Escriba el nombre de los alumnos en su clase: ");
 
            Alumnos = Integer.parseInt(nombreAlumno);
 
            numAlum = Integer.parseInt(cadenaCalif);
        } while (numAlum != calificacion);
 
        double[] notas = new double[numAlum];
 
        for (i = 0; i < notas.length; i++) {
            JOptionPane.showMessageDialog(null,"Alumno " + (i + 1) + " Nota final: ");
 
        }
 
        for (i = 0; i < notas.length; i++) {
            suma = suma + notas[i];
        }
 
        media = suma / notas.length;
 
        // No se como mostrarlo por medio del JOptionPane
        System.out.printf("Nota media del curso: %.2f %n", media);
 
        JOptionPane.showMessageDialog(null,"Listado de notas superiores a la media: ");
        for (i = 0; i < notas.length; i++) {
            if (notas[i] > media) {
                JOptionPane.showMessageDialog(null,"Alumno numero " + (i + 1) + " Nota final: " + notas[i]);
            }
        }
    }
 
}
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 y alumnos

Publicado por Kabuto (1381 intervenciones) el 24/02/2020 21:00:00
Hola.
Para este ejercicio vas a necesitar usar arrays para guardar los nombres y notas que se introducen por teclado.
Una vez recogidos los datos, es cuando hay que procesarlos para obtener la información que solicita el enunciado.

Te dejo este código con comentarios explicando paso a paso lo que se está haciendo en cada momento. Creo que se entiende fácilmente, en cualquier caso, pregunta cualquier duda que tengas.
Un saludo.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
public class Notas {
 
	public static void main(String[] args) {
 
		//Primero preguntamos cuantos alumnos se van a introducir
		int cantidadAlumnos = Integer.parseInt(JOptionPane.showInputDialog("¿Cuántos alumnos va a introducir"));
 
		//Inicializamos un array para guardar los nombres de los alumnos.
		//Tamaño del array depende de la cantidad de alumnos indicada.
		String[] nombres = new String[cantidadAlumnos];
		//Y otro array para guardar las notas
		double[] notas = new double[cantidadAlumnos];
 
		//Ahora pedimos tantos nombres y notas como ha indicado el usuario.
		for (int i = 0; i < cantidadAlumnos; i++) {
			//Pedimos nombre..
			nombres[i] = JOptionPane.showInputDialog("Nombre de Alumno:");
			//Y nota
			notas[i] = Double.parseDouble(JOptionPane.showInputDialog("Nota:"));
		}
 
		/*
		 * Bucle for ha terminado y por tanto ya tenemos todos los nombres y notas
		 * introducidos.
		 * Ahora, averiguamos los datos que pide el enunciado.
		 *
		 * Podemos mostrar todos los datos solicitados en un único JOptionPane.
		 * Para ello, iremos construyendo un String mediante la clase StringBuilder
		 * donde iremos añadiendo los datos que vamos procesando.
		 * Luego al final del programa, mostraremos este String en un JOptionPane
		 */
		StringBuilder reporte = new StringBuilder();
 
		//Mostramos nombre de todos los Alumnos
		reporte.append("\nEstos son los Alumnos matriculados:\n");
		for (String nom: nombres)
			reporte.append(nom + "\n");
 
		/*
		 * Buscamos quién ha tenido la nota más alta y mas baja.
		 * Para poder comparar, tomamos como referencia el nombre
		 * y nota del primer alumno, y a partir de ahí comparamos
		 * con el resto.
		 */
		String nombreMayor = nombres[0];
		String nombreMenor = nombres[0];
		double notaMayor = notas[0];
		double notaMenor = notas[0];
 
		for (int i = 0; i < notas.length; i++) {
			if (notas[i] > notaMayor) { //Encontramos una nota mayor
				notaMayor = notas[i]; //Actualizamos la nota mayor
				nombreMayor = nombres[i]; //Y el nombre de este alumno.
			}
			if (notas[i] < notaMenor) { //Encontramos una nota menor
				notaMenor = notas[i];
				nombreMenor = nombres[i];
			}
		}
		/*
		 * Este bucle for ya ha comparado todas la notas, así que ya tenemos
		 * el nombre y nota del mejor alumno y del peor
		 */
		reporte.append(String.format("\n\nEl Alumno: %s tiene la mayor Nota: %.2f \n", nombreMayor, notaMayor));
		reporte.append(String.format("\nEl Alumno: %s tiene la menor Nota: %.2f \n", nombreMenor, notaMenor));
 
		//Por ultimo, calculamos la nota promedio.
		//Primero sumamos todas la notas
		double sumaNotas = 0d;
		for (int i = 0; i < notas.length; i++)
			sumaNotas += notas[i];
		//Notas ya están sumadas, dividimos por la cantidad de Alumnos
		reporte.append(String.format("\n\nLa nota promedio es: %.2f", sumaNotas/cantidadAlumnos));
 
		reporte.append("\n\n-- FIN DE PROGRAMA --");
 
		//Mostramos el String que hemos ido construyendo
		JOptionPane.showMessageDialog(null, reporte);
 
	}
 
}
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

Notas y alumnos

Publicado por Juan Valdez (1 intervención) el 20/02/2024 03:29:37
Hay algunos errores y áreas de mejora en tu código. Voy a señalarlos y proporcionar una versión corregida y mejorada.

Error en el método main: El método main debe ser estático para ser el punto de entrada del programa. De lo contrario, no se ejecutará cuando intentes iniciar el programa. Así que debemos agregar static antes de void.

Manejo de entrada de nombres de alumnos: Estás leyendo la entrada del nombre del alumno como un número entero. Necesitas leerlo como una cadena de texto.

Falta de entrada de calificaciones: Aunque tienes un bucle para leer la cantidad de alumnos, no estás solicitando las calificaciones de los alumnos.

Cálculo de la nota media y mostrar resultados: Estás calculando la nota media y mostrando resultados en la consola con System.out.printf. Para mostrarlos en JOptionPane, necesitas usar JOptionPane.showMessageDialog.

Aquí está la versión corregida y mejorada de tu código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
package practicas;
 
import javax.swing.JOptionPane;
 
public class Prueba1 {
 
    public static void main(String[] args) {
        int total;
        double promedio = 0;
        String cadenaCalif;
        int calificacion;
        String nombreAlumno;
 
        do {
            cadenaCalif = JOptionPane.showInputDialog("Escriba la cantidad de alumnos en su clase: ");
            calificacion = Integer.parseInt(cadenaCalif);
        } while (calificacion <= 0);
 
        String[] nombres = new String[calificacion];
        double[] notas = new double[calificacion];
 
        // Solicitar nombres y calificaciones
        for (int i = 0; i < calificacion; i++) {
            nombreAlumno = JOptionPane.showInputDialog("Escriba el nombre del alumno " + (i + 1) + ": ");
            nombres[i] = nombreAlumno;
 
            String inputNota;
            do {
                inputNota = JOptionPane.showInputDialog("Escriba la nota de " + nombres[i] + ": ");
                notas[i] = Double.parseDouble(inputNota);
            } while (notas[i] < 0 || notas[i] > 10); // Asumiendo que las notas están en un rango de 0 a 10
 
            promedio += notas[i];
        }
 
        promedio /= calificacion;
 
        // Encontrar nota más alta y más baja
        double notaMasAlta = notas[0];
        double notaMasBaja = notas[0];
        String nombreNotaMasAlta = nombres[0];
        String nombreNotaMasBaja = nombres[0];
 
        for (int i = 1; i < calificacion; i++) {
            if (notas[i] > notaMasAlta) {
                notaMasAlta = notas[i];
                nombreNotaMasAlta = nombres[i];
            }
            if (notas[i] < notaMasBaja) {
                notaMasBaja = notas[i];
                nombreNotaMasBaja = nombres[i];
            }
        }
 
        // Mostrar resultados
        StringBuilder mensaje = new StringBuilder();
        mensaje.append("Nombres de los alumnos:\n");
        for (int i = 0; i < calificacion; i++) {
            mensaje.append(nombres[i]).append("\n");
        }
        mensaje.append("\n");
        mensaje.append("Nota más alta: ").append(nombreNotaMasAlta).append(" - ").append(notaMasAlta).append("\n");
        mensaje.append("Nota más baja: ").append(nombreNotaMasBaja).append(" - ").append(notaMasBaja).append("\n");
        mensaje.append("Promedio de notas: ").append(promedio);
 
        JOptionPane.showMessageDialog(null, mensaje.toString());
    }
}
Con estas correcciones, el programa solicitará la cantidad de alumnos, los nombres y las notas de cada uno, y luego mostrará el nombre del alumno con la nota más alta, la nota más baja y el promedio de las notas utilizando JOptionPane para la interfaz gráfica.
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