Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/12/2010, 14:24
RyoAkiyama
 
Fecha de Ingreso: octubre-2010
Mensajes: 46
Antigüedad: 11 años, 10 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 !!