Ayuda con un programa que pida los datos a un grupo indeterminado de alumnos
Publicado por Paola Edilia (1 intervención) el 27/08/2020 21:49:12
Hola! Gracias por leerme, llevo buen rato dándome tiros con este código y no logro hacerlo, estaria muy agradecida si alguien tuviera la disposición de ayudarme, no es mas que una tarea escolar, pero enserio he estado batallando mucho, esto es de lo que trata.
1. Hacer un programa que pida los datos a un grupo indeterminado de alumnos (matrícula, nombre y calificación final), los cuales serán guardados en un arreglo en la clase Oper_alumnos.
En el Principal habrá el siguiente menú de opciones:
1. Alta de alumno (pedir matrícula, nombre y calificación final)
2. Mostrar alumnos por nombre (pedir su nombre y mostrar todos sus datos – puede haber varios alumnos con el mismo nombre).
3. Mostrar datos de un alumno (pedir su matrícula y mostrar todos sus datos)
4. Promedio del grupo (calcular y mostrar promedio general)
5. Mejor alumno (muestra los datos del alumno o alumnos con la calificación mayor)
6. Salir
Notas:
1) En total habrá 3 clases: la Principal, Oper_alumnos y Alumno. La clase Oper_alumnos es la que contendrá el arreglo de alumnos y tendrá 5 métodos principales (alta, mostrar_nombre, mostrar_matricula, promedio y mejor).
2) Inicialmente el arreglo de alumnos tendrá un tamaño determinado (de preferencia 5), pero si son más alumnos, éste tendrá que cambiar (duplicar).
El problema es que en la clase Oper_Alumnos no funciona ni guno de mis metodos, solo el de alta, todos los demas me marcan la NuLLPointerException pero no entiendo en que momento me apunta a nulo.
CLASE ALUMNO
CLASE Oper_Alumnos
Clase Principal
1. Hacer un programa que pida los datos a un grupo indeterminado de alumnos (matrícula, nombre y calificación final), los cuales serán guardados en un arreglo en la clase Oper_alumnos.
En el Principal habrá el siguiente menú de opciones:
1. Alta de alumno (pedir matrícula, nombre y calificación final)
2. Mostrar alumnos por nombre (pedir su nombre y mostrar todos sus datos – puede haber varios alumnos con el mismo nombre).
3. Mostrar datos de un alumno (pedir su matrícula y mostrar todos sus datos)
4. Promedio del grupo (calcular y mostrar promedio general)
5. Mejor alumno (muestra los datos del alumno o alumnos con la calificación mayor)
6. Salir
Notas:
1) En total habrá 3 clases: la Principal, Oper_alumnos y Alumno. La clase Oper_alumnos es la que contendrá el arreglo de alumnos y tendrá 5 métodos principales (alta, mostrar_nombre, mostrar_matricula, promedio y mejor).
2) Inicialmente el arreglo de alumnos tendrá un tamaño determinado (de preferencia 5), pero si son más alumnos, éste tendrá que cambiar (duplicar).
El problema es que en la clase Oper_Alumnos no funciona ni guno de mis metodos, solo el de alta, todos los demas me marcan la NuLLPointerException pero no entiendo en que momento me apunta a nulo.
CLASE ALUMNO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package Asig6;
public class Alumno {
String matri="";
String nom="";
double calif=0;
public Alumno() {
matri="";
nom="";
calif=0;
}
}
CLASE Oper_Alumnos
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
package Asig6;
import java.util.Scanner;
public class Oper_alumnos {
Alumno n[];
Alumno al;
public Oper_alumnos(){
n=new Alumno[10];
al=new Alumno();
}
public void alta(String matri, String nom, double calif, int i) {
al.matri=matri;
al.nom=nom;
al.calif=calif;
n[i]=al;
}
public void mostrar_nombre(String nom) {
for (Alumno alumno : n) {
if(alumno.nom == nom) {
System.out.println(alumno.nom+" "+alumno.matri+" "+alumno.calif);
}
}
}
public void mostrar_matricula(String matri) {
int a=0;
for (int i = 0; i < n.length; i++) {
if(n[i].matri == matri)
System.out.println("Nombre: "+n[i].nom+" Matricula: "+n[i].matri+" Calificacion final: "+n[i].calif);
else a++;
}
if(a==0)
System.out.println("Matricula no encontrada");
}
public double promedio() {
double suma=0;
for (int i = 0; i < n.length; i++) {
suma+=n[i].calif;
}
double prom=suma/n.length;
return prom;
}
public void mejor() {
double mejor=0;
String nombre="";
for (int i = 0; i < n.length; i++) {
if(n[i].calif>mejor) {
mejor=n[i].calif;
nombre=n[i].nom;
}
}
System.out.print(nombre+" "+mejor);
}
}
Clase Principal
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 Asig6;
import java.util.Scanner;
public class Principal {
public static void main(String[] args) {
Scanner leer=new Scanner(System.in);
int n=0;
do {
System.out.println("1) Alta");
System.out.println("2) Mostrar alumnos por nombre");
System.out.println("3) Mostrar datos de un alumno");
System.out.println("4) Promedio del grupo");
System.out.println("5) Mejor alumno");
System.out.println("6) Salir");
System.out.println();
System.out.print("Seleccione: ");
n=leer.nextInt();
String nom;
String matri;
int a=0;
Oper_alumnos b=new Oper_alumnos();
switch(n) {
case 1:
System.out.println("Ingrese la matricula: ");
matri=leer.next();
System.out.println("Ingrese el nombre: ");
nom=leer.next();
System.out.println("Ingrese la calificacion final: ");
double calif=leer.nextDouble();
b.alta(matri, nom, calif, a);
a++;
break;
case 2:
System.out.println("Ingrese el nombre: ");
nom=leer.next();
b.mostrar_nombre(nom);
break;
case 3:
System.out.println("Ingrese la matricula: ");
matri=leer.next();
b.mostrar_matricula(matri);
break;
case 4:
System.out.println("Promedio grupal: "+b.promedio());
break;
case 5:
System.out.println("Mejor alumno: ");
b.mejor();
break;
case 6:
System.out.println("Gracias c: ");
break;
default:
System.out.println("Ingrese una opcion valida");
}
}while(n!=6);
}
}
Valora esta pregunta


0