Java - calificacion alumnos

 
Vista:
Imágen de perfil de Jose

calificacion alumnos

Publicado por Jose (4 intervenciones) el 09/08/2022 15:52:42
Buenos días, necesito ayuda con este programa que me falta. no le se al java ya que soy mas de c++ y mi problema es que al llegar a la parte de pedir las calificaciones me sale Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException y no he podido proseguir con el resto.


este es el enunciado por si me pueden ayudar a completarlo:

Diseñe un programa que emplee matrices para almacenar las calificaciones de los estudiantes de una sección bajo las siguientes condiciones

-Cada estudiante realiza 4 pruebas cuya calificación esta entre 1 y 20 puntos.

-El promedio mínimo aprobatorio son 10 puntos

-Mostrar la calificación promedio y el Status del estudiante, así como la cantidad de aprobados y reprobados.

El programa es con matrices pero primero lo quise hacer con array para probar y luego cambiarlo, si es posible podrian cambiarlo a que sea una matriz, disculpen las molestias.



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
package com.mycompany.notas;
import java.util.Scanner;
 
 
public class Notas {
 
    public static void main(String[] args) {
Scanner leer = new Scanner(System.in);
 
int ne = 0,i,j,suma,prom;
 
int[] notas = new int[ne];
 
 
 
 
System.out.print ("Numero de estudiantes: ");
    ne = leer.nextInt();
 
    //llenar la matriz
    for (i=0; i<ne; i++) {
 
    System.out.print("\nAlumno # "+ i+1 +": ");
 
        for (j=0; j<4; j++) {
           System.out.print("\nCalificacion # " + j+1 + ": ");
            notas[i] = leer.nextInt();
        }
 
    //promedio de los alumnos
    for (i=0; i<ne; i++) {
        suma = 0;
 
 
        for (j=0; j<notas[i]; j++)
            suma = suma + notas[i];
 
        prom = suma / notas[i];
 
 
 
   //Mostrar las notas y cuantos aprobaron y desaprobaron
   //aca esta parte esta incompleta
 
    System.out.print("/nEstudiante"+ i+1 +"/tNT1"+ notas[i] +"NT2");
 
 
        if (prom >= 10)
 
            System.out.print("Alumno # "+ i+1 +" Aprobado");
        else
            System.out.print("Alumno # "+ i+1 +" Desaprobado");
    }
    }}}
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

calificacion alumnos

Publicado por Kabuto (1381 intervenciones) el 10/08/2022 01:20:33
Si incializas la variable ne a 0

1
int ne = 0,i,j,suma,prom;

Y luego la usas para inicializar el array:
1
int[] notas = new int[ne];

Pues entonces tu array va a medir 0, es decir, no tiene espacio para almacenar nada.
Así que en cuanto intentes almacenar algo, te va a decir que te has salido de los limites del array (ArrayIndexOutOfBounds)

ne tienes que inicializarlo a un valor mayor que 0. Por ejemplo a 5 para probar el programa con 5 alumnos. O a un número mayor, o incluso puedes empezar el programa preguntando por teclado cuántos alumnos se quieren introducir.

Para usar una matriz....
Te dice que de cada alumno se recogen 4 notas, así que tendrá que ser una matriz de [ne]x[4]

Esta podría ser una solución:
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
import java.util.Scanner;
 
public class MatrizAlumnos {
 
	public static void main(String[] args) {
 
		Scanner teclado = new Scanner(System.in);
 
		System.out.print("¿Cuantos alumnos quiere calificar?: ");
		int ne = teclado.nextInt();
 
		//Declaramos matriz, con capacidad para 4 notas por cada alumno
		int[][] notas = new int[ne][4];
 
		//Pedimos calificaciones
		for (int i = 0; i < ne; i++) {
			System.out.println("\n\tCalificaciones del alumno #" + (i+1));
			for (int j = 0; j < 4; j++) {
				System.out.print("- Prueba nº " +(j+1) + ": ");
				notas[i][j] = teclado.nextInt();
			}
		}
		//Analizamos datos introducidos
		int aprobados = 0, reprobados = 0;
		System.out.println("\n\tComputación de datos introducidos\n");
 
		for(int i = 0; i < ne; i++) {
			int suma = 0;
			for (int j = 0; j < 4; j++)
				suma += notas[i][j]; //Sumamos 4 notas de este alumno
			//Calculamos promedio
			int promedio = suma / 4;
			//Mostramos en pantalla
			System.out.println("\nNota promedio del alumno #" + (i+1) + ": " + promedio);
			if (promedio >= 10) {
				System.out.println("El alumno está APROBADO");
				aprobados++;
			}
			else  {
				System.out.println("El alumno está REPROBADO");
				reprobados++;
			}
		}
 
		//Mostramos conteo final de aprobados/reprobados
		System.out.println("\n\t\t***********\n");
		System.out.println("Total aprobados: " + aprobados);
		System.out.println("Total reprobados: " + reprobados);
		System.out.println("\n\t\tFIN DE PROGRAMA");
		teclado.close();
 
	}
 
}
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
Imágen de perfil de Jose

calificacion alumnos

Publicado por Jose (4 intervenciones) el 10/08/2022 18:00:09
Hola amigo, muchas gracias por tu ayuda y que error tan tonto el mío de no darle valor al Array

disculpa que te moleste de nuevo, pero como puedo mostrar las calificaciones de esta manera?



Estudiante Nota 1 Nota 2 Nota 3 Nota 4 Promedio Status

1 16 18 14 16 16,00 Aprobado

2 8 12 6 6 8,00 Reprobado
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
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

calificacion alumnos

Publicado por Kabuto (1381 intervenciones) el 11/08/2022 00:55:35
Hay que ir construyendo las líneas de resultados por partes, según el bucle va avanzando en las tareas que realiza.
Conviene usar printf() para poder dar algo de formato al texto y que salga más o menos maquetado. Esto suele ser bastante trabajoso, sobre todo si no se conoce bien como funciona printf().
Así que no suele ser recomendable invertir tiempo en esto ya que lo que importa es aprender lógica de la computación y no tanto mostrar resultados en modo texto que quede bonito.

En cualquier caso, puede hacerse algo así(marco en negrita los cambios):
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
public class MatrizAlumnos {
 
	public static void main(String[] args) {
 
		Scanner teclado = new Scanner(System.in);
 
		System.out.print("¿Cuantos alumnos quiere calificar?: ");
		int ne = teclado.nextInt();
 
		//Declaramos matriz, con capacidad para 4 notas por cada alumno
		int[][] notas = new int[ne][4];
 
		//Pedimos calificaciones
		for (int i = 0; i < ne; i++) {
			System.out.println("\n\tCalificaciones del alumno #" + (i+1));
			for (int j = 0; j < 4; j++) {
				System.out.print("- Prueba nº " +(j+1) + ": ");
				notas[i][j] = teclado.nextInt();
			}
		}
		//Analizamos datos introducidos
		int aprobados = 0, reprobados = 0;
		System.out.println("\n\tComputación de datos introducidos\n");
 
		System.out.println("Estudiante Nota 1 Nota 2 Nota 3 Nota 4 Promedio Status");
 
		for(int i = 0; i < ne; i++) {
			int suma = 0;
			System.out.printf("    %d     ", (i+1)); //Mostramos nº estudiante
			//En el siguiente bucle mostramos las notas en pantalla y además las vamos sumando
			for (int j = 0; j < 4; j++) {
				System.out.printf("  %2d   ", notas[i][j]);//La nota ocupa dos espacios, incluso si tiene solo un digito
				suma += notas[i][j]; //Sumamos notas para luego calcular promedio
			}
			//Calculamos promedio
			int promedio = suma / 4;
			//Mostramos en pantalla
			System.out.printf("   %2d    ",promedio);
			//Indicamos el status y contamos aprobados/reprobados
			if (promedio >= 10) {
				System.out.println("APROBADO");
				aprobados++;
			}
			else  {
				System.out.println("REPROBADO");
				reprobados++;
			}
		}
 
		//Mostramos conteo final de aprobados/reprobados
		System.out.println("\n\t\t***********\n");
		System.out.println("Total aprobados: " + aprobados);
		System.out.println("Total reprobados: " + reprobados);
		System.out.println("\n\t\tFIN DE PROGRAMA");
		teclado.close();
 
	}
 
}

Y en pantalla tenemos un resultado con texto mínimamente bien ajustado:
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
¿Cuantos alumnos quiere calificar?: 2
 
	Calificaciones del alumno #1
- Prueba nº 1: 10
- Prueba nº 2: 12
- Prueba nº 3: 8
- Prueba nº 4: 5
 
	Calificaciones del alumno #2
- Prueba nº 1: 10
- Prueba nº 2: 12
- Prueba nº 3: 12
- Prueba nº 4: 13
 
	Computación de datos introducidos
 
Estudiante Nota 1 Nota 2 Nota 3 Nota 4 Promedio Status
    1       10     12      8      5       8    REPROBADO
    2       10     12     12     13      11    APROBADO
 
		***********
 
Total aprobados: 1
Total reprobados: 1
 
		FIN DE PROGRAMA
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
Imágen de perfil de Jose

calificacion alumnos

Publicado por Jose (4 intervenciones) el 11/08/2022 03:53:34
agradecido con tu ayuda, me quedo muy claro. Eres un sol :D.
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