Foros del Web » Programación para mayores de 30 ;) » Java »

guardar una una class(con set y get) en una matriz de tipo class

Estas en el tema de guardar una una class(con set y get) en una matriz de tipo class en el foro de Java en Foros del Web. Buen dia a todos, ojala me puedan ayudar Tengo un problema con este programa, me estoy iniciando en java y tengo que hacer un programa ...
  #1 (permalink)  
Antiguo 01/03/2009, 15:37
 
Fecha de Ingreso: mayo-2008
Mensajes: 47
Antigüedad: 16 años
Puntos: 0
Información guardar una una class(con set y get) en una matriz de tipo class

Buen dia a todos, ojala me puedan ayudar

Tengo un problema con este programa, me estoy iniciando en java y tengo que hacer un programa que en una matriz me guarde una clase con sus atributos get y set, la matriz debe ser del tipo de la clase que voy a guardar para que en cada una de sus casillas me guarde todos los atributo de la clase, creo que mi problema es a la hora de hacer el llamado con un for para hacer un calculo con un metodo de la clase (por ejemplo calcular un importe), quisiera saber como tengo que hacer esto, de la manera que lo estoy es la siguente


// Declaro las vaiable de tipo class (que solo contiene set y get)
nombreClase variable = new nombreClase();

// Declaro la matriz del tipo class (donde quiero guardar variable)
nombreClase matriz[][] = new nombreClase[n][m];

// Lleno la clase que contiene set y get y la paso el tipo de una variable
variable.metodo(int );
variable.metodo(float);

// Guardo en la matriz de tipo clase
matriz[n][m].metodo(varible);

despues quiero hacer un recorrido para poder obterner un metodo de la varible que guarde en la matriz y lo ago con un for

for(int i=0; i<m; i++){
int var = matriz[m][i].metodo;
}

y en este ultimo paso me causa error me vota el programa creo que tengo bien controlado los siclos y las variables para determinar el fin del for y no se como hacer pora despues de guardar la clase en la matriz obterner los datos de los metodos de cada una de las clases que guarde.

Si alguin me podria ayudar se los agradeceria
  #2 (permalink)  
Antiguo 01/03/2009, 19:38
Avatar de DiabloGuardian  
Fecha de Ingreso: noviembre-2008
Ubicación: Hidalgo
Mensajes: 215
Antigüedad: 15 años, 5 meses
Puntos: 3
Respuesta: guardar una una class(con set y get) en una matriz de tipo class

si quieres pon aca el error que te arroja para corregirlo mas facilmente, una observacion, tienes esto

Cita:
despues quiero hacer un recorrido para poder obterner un metodo de la varible que guarde en la matriz y lo ago con un for

for(int i=0; i<m; i++){
int var = matriz[m][i].metodo;
}
si pones los () al tu metodo?? y si regresa este un entero???
__________________
-=:[ Lo importante no es saber todo, sino saber buscar ]:=-
  #3 (permalink)  
Antiguo 02/03/2009, 03:01
 
Fecha de Ingreso: mayo-2008
Mensajes: 47
Antigüedad: 16 años
Puntos: 0
Respuesta: guardar una una class(con set y get) en una matriz de tipo class

Gracias por la observacion, pero si tengo los (), la cuestion es que en el programa tengo que sumar el importe de improducto (precion* cantidad) y hacer lo mismo por los n producto y despues de esto sumar lo y sacar el importe total de total de todos lo productos (la suma de todo los importes), pero mi codigo solo me esta considerando un solo producto, pero si me considera el numero de todos los que he introducido y solo me saca el importe de una el numero de veces que he introduccido productos...... por aqui les dejo el codigo (main, clase producto, clase matriz).

///// 1.- main /////

import javax.swing.JOptionPane;

class Main{
public static void main(String args[]){
int op, cont = 0, cont1 = 0, cont2 = 0, cont3 = 0, pl, op1, imp;

Producto p = new Producto();
MatrizProducto m = new MatrizProducto();

int Clave, Cantidad, cant=0;
float Precio;
String Nombre;

do{
op = Integer.parseInt(JOptionPane.showInputDialog(null, "1.- Alta de producto\n2.- Importe Planta\n3.- Importe Total","Maquiladora",JOptionPane.PLAIN_MESSAGE));
switch(op){

// Lectura de Datos
case 1: pl = Integer.parseInt(JOptionPane.showInputDialog(null, "Selecciona una planta para introducir producto\n 1.- [Planta 1]\n 2.- [Planta 2]\n 3.- [Planta 3]"));
switch(pl){
case 1:
if(cont1 < 3){
Clave = Integer.parseInt(JOptionPane.showInputDialog(null, "Clave","Datos Producto",JOptionPane.PLAIN_MESSAGE));
Nombre = JOptionPane.showInputDialog(null,"Nombre","Datos Producto",JOptionPane.PLAIN_MESSAGE);
Precio = Float.parseFloat(JOptionPane.showInputDialog(null, "Precio","Datos Producto",JOptionPane.PLAIN_MESSAGE));
Cantidad = Integer.parseInt(JOptionPane.showInputDialog(null, "Cantidad","Datos Producto",JOptionPane.PLAIN_MESSAGE));
p.setClave(Clave);
p.setNombre(Nombre);
p.setPrecio(Precio);
p.setCantidad(Cantidad);

// Llenado de Matriz
m.setPlanta(pl);
m.setContador(cont1);
m.setMatriz(p);
cont1 += 1;

} else {
JOptionPane.showMessageDialog(null,"Planta Llena","Planta 1",JOptionPane.WARNING_MESSAGE);
}break;

case 2:
if(cont2 < 3){
Clave = Integer.parseInt(JOptionPane.showInputDialog(null, "Clave","Datos Producto",JOptionPane.PLAIN_MESSAGE));
Nombre = JOptionPane.showInputDialog(null,"Nombre","Datos Producto",JOptionPane.PLAIN_MESSAGE);
Precio = Float.parseFloat(JOptionPane.showInputDialog(null, "Precio","Datos Producto",JOptionPane.PLAIN_MESSAGE));
Cantidad = Integer.parseInt(JOptionPane.showInputDialog(null, "Cantidad","Datos Producto",JOptionPane.PLAIN_MESSAGE));
p.setClave(Clave);
p.setNombre(Nombre);
p.setPrecio(Precio);
p.setCantidad(Cantidad);

// Llenado de Matriz
m.setPlanta(pl);
m.setContador(cont2);
m.setMatriz(p);
cont2 += 1;

} else {
JOptionPane.showMessageDialog(null,"Planta Llena","Planta 1",JOptionPane.WARNING_MESSAGE);
}break;

case 3:
if(cont3 < 3){
Clave = Integer.parseInt(JOptionPane.showInputDialog(null, "Clave","Datos Producto",JOptionPane.PLAIN_MESSAGE));
Nombre = JOptionPane.showInputDialog(null,"Nombre","Datos Producto",JOptionPane.PLAIN_MESSAGE);
Precio = Float.parseFloat(JOptionPane.showInputDialog(null, "Precio","Datos Producto",JOptionPane.PLAIN_MESSAGE));
Cantidad = Integer.parseInt(JOptionPane.showInputDialog(null, "Cantidad","Datos Producto",JOptionPane.PLAIN_MESSAGE));
p.setClave(Clave);
p.setNombre(Nombre);
p.setPrecio(Precio);
p.setCantidad(Cantidad);

// Llenado de Matriz
m.setPlanta(pl);
m.setContador(cont3);
m.setMatriz(p);
cont3 += 1;

} else {
JOptionPane.showMessageDialog(null,"Planta Llena","Planta 1",JOptionPane.WARNING_MESSAGE);
}break;
}break;

case 2: pl = Integer.parseInt(JOptionPane.showInputDialog(null, "Selecciona una planta para ver importe\n 1.- [Planta 1]\n 2.- [Planta 2]\n 3.- [Planta 3]"));
switch(pl){
case 1: m.setPlanta(pl);
m.setContador(cont1);
m.calcImporte();
break;

case 2: m.setPlanta(pl);
m.setContador(cont2);
m.calcImporte();
break;

case 3: m.setPlanta(pl);
m.setContador(cont3);
m.calcImporte();
break;
}
break;
case 3: m.calcImporteTotal(cont1,cont2,cont3);
break;
}
}while(op <= 3);
}
}

///// 2.- clase producto(set y get) /////

class Producto{

private int clv, cant;
private String nom;
private float pre;

// Set
public void setClave(int nuevaClv){
clv = nuevaClv;
}

public void setNombre(String nuevoNombre){
nom = nuevoNombre;
}

public void setPrecio(float precioUnit){
pre = precioUnit;
}

public void setCantidad(int nuevaCantidad){
cant = nuevaCantidad;
}

// Get
public int getClave(){
return clv;
}

public String getNombre(){
return nom;
}

public float getPrecio(){
return pre;
}

public int getCantidad(){
return cant;
}

}

///// 3.- clase matriz donde pretendo guardar clase producto ////

import javax.swing.JOptionPane;

class MatrizProducto{

private Producto p = new Producto();
private Producto matriz[][] = new Producto[3][10];
private int cont, pla, cant, clv;
private float pre, importe, importeTotal;
private String nom, tx="";

public void setPlanta(int planta){
pla = planta - 1;
}

public void setContador(int contador){
cont = contador;
}

public void setMatriz(Producto p){
matriz[pla][cont] = p;
}

public void calcImporte(){
importe = 0;
tx = "";
for(int i=0; i<cont; i++){
clv = matriz[pla][i].getClave();
nom = matriz[pla][i].getNombre();
pre = matriz[pla][i].getPrecio();
cant = matriz[pla][i].getCantidad();
tx += "Clave = "+clv+"\nNombre = "+nom+"\nPrecio = "+pre+"\nCantidad "+cant;
tx += "\n\n";
importe += pre * cant;
}
JOptionPane.showMessageDialog(null,tx+"Importe Planta = "+importe);
}

public void calcImporteTotal(int c1, int c2, int c3){
int c = c1;
for(int j=0; j<3; j++){
if(j == 1) c = c2;
if(j == 2) c = c3;
for(int i=0; i<c; i++){
float cnt = matriz[j][i].getPrecio();
int coy = matriz[j][i].getCantidad();
importeTotal += coy * cnt;
}
}
JOptionPane.showMessageDialog(null,"Importe Total = "+importeTotal);
}

}
  #4 (permalink)  
Antiguo 02/03/2009, 13:08
Avatar de DiabloGuardian  
Fecha de Ingreso: noviembre-2008
Ubicación: Hidalgo
Mensajes: 215
Antigüedad: 15 años, 5 meses
Puntos: 3
Respuesta: guardar una una class(con set y get) en una matriz de tipo class

en la clase principal en la parte donde esta este codigo

Cita:
case 2: pl = Integer.parseInt(JOptionPane.showInputDialog(null, "Selecciona una planta para ver importe\n 1.- [Planta 1]\n 2.- [Planta 2]\n 3.- [Planta 3]"));
switch(pl){
case 1: m.setPlanta(pl);
m.setContador(cont1);
m.calcImporte();
break;
para que usas tu contador cont1?????

creo que ahi esta el detalle
__________________
-=:[ Lo importante no es saber todo, sino saber buscar ]:=-
  #5 (permalink)  
Antiguo 02/03/2009, 19:40
 
Fecha de Ingreso: mayo-2008
Mensajes: 47
Antigüedad: 16 años
Puntos: 0
De acuerdo Respuesta: guardar una una class(con set y get) en una matriz de tipo class

Problema resuelto.........

Bueno el cont1 lo utilizo para contar las veces que se a introducido un dato en la en la posicion [0][cont1] para saber hasta donde voy a detener el siclo

El problema esta en que cuando voy a llenar un objeto lo tengo que declarar justo antes de pasarle el los datos a la clase producto asi ......

Clave = Integer.parseInt(JOptionPane.showInputDialog(null, "Clave","Datos Producto",JOptionPane.PLAIN_MESSAGE));
Nombre = JOptionPane.showInputDialog(null,"Nombre","Datos Producto",JOptionPane.PLAIN_MESSAGE);
Precio = Float.parseFloat(JOptionPane.showInputDialog(null, "Precio","Datos Producto",JOptionPane.PLAIN_MESSAGE));
Cantidad = Integer.parseInt(JOptionPane.showInputDialog(null, "Cantidad","Datos Producto",JOptionPane.PLAIN_MESSAGE));
Producto p = new Producto(); /*Aqui era el problema*/
p.setClave(Clave);
p.setNombre(Nombre);
p.setPrecio(Precio);
p.setCantidad(Cantidad);

y asi en cada case para guardar producto
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:34.