02/12/2010, 14:24
|
| | Fecha de Ingreso: octubre-2010
Mensajes: 46
Antigüedad: 14 años, 2 meses Puntos: 1 | |
Respuesta: accesar a elementos de arreglo de objetos Hola que tal, amm no entiendo bien el por que haces un arreglo de 3 elementos. es suficiente con hacer un arreglo de objetos y acceder a las variables declaradas dentro del mismo objeto. Me explico. Tienes tu clase grupo, con las variables mat, esp fce y prom, es mas facil manejar estos datos con los metodos getter an setter de cada variable, y te ahorrarias el crear un nuevo arreglo, en tu caso de tres elementos, ya que solo bastaria con acceder a cada valor dentro del arreglo de objetos al momento de sacar tu promedio de materias.
Aqui va un ejemplo:
Si tienen un arreglo, en tu caso de grupos
grupos [] alumnos=new grupos[5];//5 es un ejemplo, puede ser n
cada elemento dentro de este arreglo contendra las 4 variables que creaste, ademas de los metodos de la clase, pero hay que inicializarlo, para eso esta el cosntructor por default
for(int f=0;f<5;f++)
{
alumnos[f]=new grupos();
}
Con esto, acabamos de finalizar la inicialización de nuestro arreglo, quedando asi
alumnos[0] contiene mat,esp,form y promedio
alumnos[1] contiene mat,esp,form y promedio
...
alumnos[n] contiene mat,esp,form y promedio
Para darle una calificacion a un alumno, basta con especificar que alumno es y que tipo de calificacion es, aqui entran los getter and setter.
alumno[2].setMat(10);
en tu codigo no esta clase, pero la puedes colocar de la siguiente manera
public void setMat(int mat)
{
this.mat =mat;
}
Suponiendo que ya llenaste todos tus alumnos con calificaciones(supongamos) que para mate son:
10
4
6
8
9
Para sacar el promedio por materia, solo accede al valor con el metodo get y especificando el numero de alumno.
int mat=alumno[4]=getMat();
esto te dara en automatico la calificacion del alumno 4(considerando que hay alumno 0) de matematicas, solo lo colocas dentro de un form, suma sy divides entre 5 y ya esta.
Espero me hayas entendido, te dejo el codigo de tu programa, espero te ayude y cualquier duda avisame !!
import javax.swing.JOptionPane;
public class calificaciones {
int matematicas;
int español;
int formacion;
double promedio;
public int getEspañol() {
return español;
}
public void setEspañol(int español) {
this.español = español;
}
public int getFormacion() {
return formacion;
}
public void setFormacion(int formacion) {
this.formacion = formacion;
}
public int getMatematicas() {
return matematicas;
}
public void setMatematicas(int matematicas) {
this.matematicas = matematicas;
}
public double getPromedio() {
return promedio;
}
public void setPromedio(int a,int b,int c) {
this.promedio = (a+b+c)/3;
}
public static void main(String[] args) {
String calificacion="";
int numeroalumnos=0;
int matematicas=0;
int español=0;
int formacion=0;
double promedioMatematicas=0;
double promedioEspañol=0;
double promedioFormacion=0;
//obtenemos el numero de alumnos
numeroalumnos=Integer.parseInt(JOptionPane.showInp utDialog("Ingrese el total de alumnos: "));
//creando un arrreglo de objetos, dependiendo del numero de alumnos que quieras
calificaciones [] alumnos=new calificaciones[numeroalumnos];
//aqui inicializamos cada alumno
for(int x=0;x<numeroalumnos;x++)
{
alumnos[x]=new calificaciones();
}
//asignamos calificaciones a los n alumnos
for(int x=0;x<numeroalumnos;x++)
{
//asignamos calificacion de matematicas
calificacion = JOptionPane.showInputDialog("Ingrese la calificacion de de matematicas para el alumno: "+(x+1));
alumnos[x].setMatematicas(Integer.parseInt(calificacion));
//asignamos calificaciion de español
calificacion = JOptionPane.showInputDialog("Ingrese la calificacion de de español para el alumno: "+(x+1));
alumnos[x].setEspañol(Integer.parseInt(calificacion));
//asignamos calificaciion de formacion
calificacion = JOptionPane.showInputDialog("Ingrese la calificacion de de formacion para el alumno: "+(x+1));
alumnos[x].setFormacion(Integer.parseInt(calificacion));
//asignamos promedio
alumnos[x].setPromedio(alumnos[x].getMatematicas(), alumnos[x].getEspañol(), alumnos[x].getFormacion());
}
//para sacar el promedio por materia
for(int x=0;x<numeroalumnos;x++)
{
//incrementamos el contador de cada materia, obteniendo el valor del arreglo dependiendo del alumno
matematicas=matematicas+alumnos[x].getMatematicas();
español=español+alumnos[x].getEspañol();
formacion=formacion+alumnos[x].getFormacion();
}
//finalmente, sacamos el promedio
promedioMatematicas=matematicas/numeroalumnos;
promedioEspañol=español/numeroalumnos;
promedioFormacion=formacion/numeroalumnos;
//finalmente mostramos los promedios
JOptionPane.showMessageDialog(
null, "Matematicas: " + promedioMatematicas+"\nEspañol: "+promedioEspañol+"\nFormacion: "+promedioFormacion , "Promedios",JOptionPane.PLAIN_MESSAGE);
}
}
Saludos !! |