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

Cambiar el nombre de un objeto dinamicamente

Estas en el tema de Cambiar el nombre de un objeto dinamicamente en el foro de Java en Foros del Web. Hola estoy tratando de realizar un programa que me almacene en un array la cantidad de veces que un usuario digite la compra de un ...
  #1 (permalink)  
Antiguo 22/03/2010, 11:30
Avatar de mss_lobaton85  
Fecha de Ingreso: abril-2009
Ubicación: Buenaventura
Mensajes: 41
Antigüedad: 15 años
Puntos: 0
Cambiar el nombre de un objeto dinamicamente

Hola estoy tratando de realizar un programa que me almacene en un array la cantidad de veces que un usuario digite la compra de un producto este es la funcion que me crea el array


public void almacenaArticulos(String cod ,String Descripcion, float Valor){

compra=new ArrayList();
//creo un articulo

Articulo producto=new Articulo();

producto.setproducto(cod);
producto.setDescripcion(Descripcion);
producto.setValor(Valor);

compra.add(producto);
// agregando a la lista los objetos(Articulos)



}

hasta ahora el arreglo me almacena un solo producto pero no tengo idea de como hacer que se agregen mas productos cada vez que el usuario envie la compra.

por favor ayudenme estoy tratando de aprender pero no tengo los conceptos muy claros pero tratare de aclarar mas la informacion a quien me ayude.
  #2 (permalink)  
Antiguo 22/03/2010, 16:38
 
Fecha de Ingreso: marzo-2010
Mensajes: 1
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Cambiar el nombre de un objeto dinamicamente

Bueno No estoy seguro de cual es tu problema ya que has colocado muy poco codigo, pero lo que me parece es que como estas declarando las variables dentro de un procedimiento, estas desaparacen al salir de dicho procedimiento.

Por otro lado, suponiendo que la variable/objeto "compra" es publica, me parece que la linea : "compra=new ArrayList();" te esta borrando cualquier informacion almacenada anteriormente y es por ello que solo ves un solo producto cuando consultas la informacion que contiene la variable "compra". Si lo deseas coloca mas codigo para poder entender mas tu problema y así ayudarte mejor.

Me registré nada más para contestar esta pregunta jejejeje, así salgo yo de la duda tambien de cual es tu problema...

SALUDOS...!!!
  #3 (permalink)  
Antiguo 22/03/2010, 22:42
Avatar de mss_lobaton85  
Fecha de Ingreso: abril-2009
Ubicación: Buenaventura
Mensajes: 41
Antigüedad: 15 años
Puntos: 0
De acuerdo Respuesta: Cambiar el nombre de un objeto dinamicamente

ok te mostrare; mi programa tiene tres archivos el primero se llama UsaArticulo.java es aqui donde genero un menu con 4 opciones

1. Lista Articulos \n" + "2.Buscar articulo \n"+
+ "4.Salir\n\n"
el problema se genera cuando debo hacer la compra "3.Comprar \n".

///////////////////////primer archivo UsaArticulo.java/////////////////////
Código:
package dato.edu.compra.presentacion;

import java.util.ArrayList;

import javax.swing.JOptionPane;

import dato.edu.compra.logica.Articulo;
import dato.edu.compra.logica.ControladorArticulo;

public class UsaArticulo {

	private static ControladorArticulo control = new ControladorArticulo();
	private static ControladorArticulo control2 = new ControladorArticulo();
	
	
	public static void main(String a[]) {

		control.cargarArticulos();

		String opciones = "1. Lista Articulos \n" + "2.Buscar articulo \n"+"3.Comprar \n"
				+ "4.Salir\n\n" + "Digite la opcion:";
		int opc = 0;

		do {
			opc = Integer.parseInt(JOptionPane.showInputDialog(null, opciones));

			switch (opc) {
			case 1:
				listarArticulos();
				break;
			case 2: buscarArticulo(); break;
			case 3: comprarArticulo(); break;
		
				
			}

		} while (opc != 4);
	}

	

	public static void listarArticulos() {
     ArrayList lista= control.getListaArticulos();
     String salida="";
     
     for(int i=0; i<lista.size(); i++)
     {
       Articulo art=(Articulo)lista.get(i);
       salida +="Codigo: " +art.getCodigo()
                +"Descripcion: " +art.getDescripcion()
                +"Valor:" +art.getValor() +"\n";
       
     }
     
     JOptionPane.showMessageDialog(null,salida);
	}
	
/**
 * opcion para buscar un articulo con su codigo
 * 	
 */

	public static void buscarArticulo(){
	
   String mensaje="Articulo no se encuentra en la lista";		
		
	String codigo=JOptionPane.showInputDialog(null, "Codigo");	
		
	Articulo articuloABuscar=new Articulo();
	articuloABuscar.setCodigo(codigo);
	Articulo articuloBuscado=control.buscarDatos(articuloABuscar);
	
    if(articuloBuscado!=null){
    	mensaje="Codigo:" +articuloBuscado.getCodigo()
    	        +"Descripcion:" + articuloBuscado.getDescripcion()
    	        +"Valor:" +articuloBuscado.getValor();
    }
    
    JOptionPane.showMessageDialog(null, mensaje);
	}
	
	
	
	public static void comprarArticulo(){
		
		   String mensaje="Articulo no se encuentra en la lista";		
				
			String codigo=JOptionPane.showInputDialog(null, "Codigo");	
				
			int Cant = 0;		
			Articulo articuloABuscar=new Articulo();
			articuloABuscar.setCodigo(codigo);
			Articulo articuloBuscado=control.buscarDatos(articuloABuscar);
			
			String descripcion=articuloBuscado.getDescripcion();
			float valor=articuloBuscado.getValor();
		    if(articuloBuscado!=null){
		    
		    	     
		        	        
		   
		   String opciones2 = "Cantidad";  			   
		   Cant = Integer.parseInt(JOptionPane.showInputDialog(null, opciones2));
	
		   control2.almacenaArticulos(codigo,descripcion,valor);
	    	ArrayList lista2= control2.getcompra();
		   
		   for(int i=0; i<lista2.size(); i++)
	         {
	           Articulo art2=(Articulo)lista2.get(i);
	          mensaje="Codigo: " +art2.getproducto()
	          +"Descripcion:" + art2.getDescripcion()      
	          +"VAlor:" + art2.getValor()* Cant; 
	          
	           	
	         }	  		    	
	    				     
			    
		    }
		    JOptionPane.showMessageDialog(null, mensaje);
		    
		    	    
		    }


}

///////////////////////Segundo Archivo Articulo.java/////////////////////

es donde creo las variables set y get:

Código:
package dato.edu.compra.logica;

public class Articulo {

	private String  codigo;
	private String descripcion;
	private String producto;
	private float valor;

	
	
	// aqui cree el set y get de producto
	public void setproducto(String coda)
	{
		this.producto=coda;
	}
	
	public String getproducto(){
		return this.producto;
	}
	
	
	
	
	// aqui cree el set y get de codigo
	public void setCodigo(String cod)
	{
		this.codigo=cod;
	}
	
	public String getCodigo(){
		return this.codigo;
	}
	
	// set y get de descripcion.
	
	public void setDescripcion(String desc){
		this.descripcion=desc;
	}
	
	public String getDescripcion(){
		return this.descripcion;
	}

	// set y get de valor
	
	public void setValor(float val){
     this.valor=val;		
 	}
	
	public float getValor(){
		return this.valor;
		
	}
	
}


///////////////////////Tercer Archivo ControladorArticulo.java/////////////////////

es aqui donde creo los arraylist.

Código:
package dato.edu.compra.logica;

import java.util.ArrayList;
import java.util.ResourceBundle.Control;



public class ControladorArticulo {
	
private ArrayList listaArticulos;
private ArrayList compra;


public ArrayList getListaArticulos() {
	return listaArticulos;
}

public ArrayList getcompra() {
	return compra;
}


public void setListaArticulos(ArrayList listaArticulos) {
	this.listaArticulos = listaArticulos;
}

public void setcompra(ArrayList compra) {
	this.compra = compra;
}


public void cargarArticulos(){

	listaArticulos=new ArrayList();
//creo un articulo llamado cafe
	Articulo cafe=new Articulo();
	cafe.setCodigo("0111");
	cafe.setDescripcion("cafe instantanea peq");
	cafe.setValor(4000);
	
	//creo un articulo llamado lentejas
	Articulo lent=new Articulo();
	lent.setCodigo("0112");
	lent.setDescripcion("Lenteja X libra");
	lent.setValor(2500);
	
	Articulo helado=new Articulo();
	helado.setCodigo("0113");
	helado.setDescripcion("Helado fantasia X libra");
	helado.setValor(12000);
	
	// agregando a la lista los objetos(Articulos)
	
	listaArticulos.add(cafe);
    listaArticulos.add(lent);
    listaArticulos.add(helado);
}




public void almacenaArticulos(String cod ,String Descripcion, float Valor){

	compra=new ArrayList();
//creo un articulo llamado cafe
	
	
	  
   Articulo producto=new Articulo();
   
	producto.setproducto(cod);
	producto.setDescripcion(Descripcion);
	producto.setValor(Valor);
	
	
	compra.add(producto);
		// agregando a la lista los objetos(Articulos)
     
	
    
}


public Articulo buscarDatos(Articulo producto){
	

	
//	 esta variable nos permite capturar el indice del objeto articulo
//	 es igual a  el codigo del producto.
	
	int encontre=-1;
	
	// recorremos la lista de todos los articulos.
	for(int i=0;i<listaArticulos.size(); i++){
		//sacamos un articulo.
	 	Articulo art1=(Articulo)listaArticulos.get(i);
	 	
	 /**
	  * comparamos el codigo del articulo de la lista
	  * con el codigo del producto. 
	  */
	 	 	
	 if(art1.getCodigo().compareToIgnoreCase(producto.getCodigo())==0){
             encontre=i; break;		 
	 }// fin if	
		 
	}// fin for	 
  if(encontre !=-1){
	 return (Articulo)listaArticulos.get(encontre);  
  }		 
		 
  else
	  return null;
		 
	
}
	
}
ESPERO TE SEAN DE GRAN AYUDA PARA QUE ME PUEDAS COLABORAR TE LO AGRADECERE ENORMEMENTE
  #4 (permalink)  
Antiguo 23/03/2010, 06:45
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 2 meses
Puntos: 10
Respuesta: Cambiar el nombre de un objeto dinamicamente

Wenas

Hombre es que si en el procedimiento de agregar(almacenaArticulos) lo primero que haces es
Código:
compra=new ArrayList();
Ya me contaras.

Saludos.
__________________
--
NO. Tu problema no es urgente.

CCFVLS
  #5 (permalink)  
Antiguo 23/03/2010, 08:02
aguirremanuel
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Cambiar el nombre de un objeto dinamicamente

Hola soy manuel_j555 solo que habia entrado por Facebook anteriormente...

Solo debes quitar la linea del procedimiento almacenaArticulos :

Código:
compra = new ArrayList();
Ya que esta linea te borra todo el contenido de la variable compra, es como si la reseteara...
  #6 (permalink)  
Antiguo 23/03/2010, 09:50
Avatar de mss_lobaton85  
Fecha de Ingreso: abril-2009
Ubicación: Buenaventura
Mensajes: 41
Antigüedad: 15 años
Puntos: 0
Respuesta: Cambiar el nombre de un objeto dinamicamente

Cita:
Iniciado por aguirremanuel Ver Mensaje
Hola soy manuel_j555 solo que habia entrado por Facebook anteriormente...

Solo debes quitar la linea del procedimiento almacenaArticulos :

Código:
compra = new ArrayList();
Ya que esta linea te borra todo el contenido de la variable compra, es como si la reseteara...

Bueno separe el compra array list en un constructor

Código:
public ControladorArticulo()
{
  compra = new ArrayList();
  
  
}
sin embargo en el programa principal que es usaArticulo dentro de comprarArticulo yo imprimo el arraylist y solo me imprime el ultimo valor por favor revisa esa parte que te digo a ver si por alla tengo el error?
  #7 (permalink)  
Antiguo 23/03/2010, 10:45
aguirremanuel
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Cambiar el nombre de un objeto dinamicamente

Bueno mi hermano la cosa estaba en esta parte del programa :

Código:
for (int i = 0; i < lista2.size(); i++)
{
     Articulo art2 = (Articulo) lista2.get(i);
     mensaje = "Codigo: " + art2.getproducto()
                        + "Descripcion:" + art2.getDescripcion()
                        + "VAlor:" + art2.getValor() * Cant;

}
Lo que sucede es que cada ves q le asignas datos a la variable mensaje, borras lo que esta tenia anteriormente.

Solo debes usarla como acumulador :

Código:
mensaje  = mensaje + "el articulo actual";
//          ó
mensaje += "el articulo actual";
Cualquier cosa me dices si te funcionó o no...
  #8 (permalink)  
Antiguo 23/03/2010, 10:58
Avatar de mss_lobaton85  
Fecha de Ingreso: abril-2009
Ubicación: Buenaventura
Mensajes: 41
Antigüedad: 15 años
Puntos: 0
Respuesta: Cambiar el nombre de un objeto dinamicamente

hice lo del acumulador de la siguiente manera:

Código:
  for(int i=0; i<lista2.size(); i++)
           {
            Articulo art2=(Articulo)lista2.get(i);
            
            mensaje += "Codigo: " +art2.getproducto()
            +" Descripcion:" + art2.getDescripcion()
            +" VAlor:" + art2.getValor()* Cant+"\n";


           }
Sin embargo ahora me imprime el ultimo dato la cantidad de veces que haya la compra,
  #9 (permalink)  
Antiguo 23/03/2010, 11:56
aguirremanuel
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Cambiar el nombre de un objeto dinamicamente

me parece bastante raro ya que a mi me funcionó bien mostrandome cada uno de los articulos que e comprado

aqui te paso un link a la foto que tome del archivo ejecutandose :

http://manueljose.dynalias.com/Dibujo.JPG"

Hay se ven los dos articulos que e comprado y la verdad no se porq a ti te suceda eso...

Última edición por aguirremanuel; 23/03/2010 a las 12:12
  #10 (permalink)  
Antiguo 23/03/2010, 12:01
Avatar de mss_lobaton85  
Fecha de Ingreso: abril-2009
Ubicación: Buenaventura
Mensajes: 41
Antigüedad: 15 años
Puntos: 0
Respuesta: Cambiar el nombre de un objeto dinamicamente

Cita:
Iniciado por aguirremanuel Ver Mensaje
me parece bastante raro ya que a mi me funcionó bien mostrandome cada uno de los articulos que e comprado

aqui te paso un link a la foto que tome del archivo ejecutandose :

[URL="http://manueljose.dynalias.com/Dibujo.JPG"]imagen[/URL]

Hay se ven los dos articulos que e comprado y la verdad no se porq a ti te suceda eso...
creo que ya eh alterado mucho mi codigo podrias enviarme el codigo que te funciona por fa haber que le he cambiado? te lo agradecere enormenmente
  #11 (permalink)  
Antiguo 23/03/2010, 12:10
aguirremanuel
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Cambiar el nombre de un objeto dinamicamente

este fué el unico procedimiento que modifiqué lo demas lo dejé igual :

Código:
public static void comprarArticulo()
    {

        String mensaje = "Articulo no se encuentra en la lista";

        String codigo = JOptionPane.showInputDialog(null, "Codigo");

        int Cant = 0;
        Articulo articuloABuscar = new Articulo();
        articuloABuscar.setCodigo(codigo);
        Articulo articuloBuscado = control.buscarDatos(articuloABuscar);

        String descripcion = articuloBuscado.getDescripcion();
        float valor = articuloBuscado.getValor();
        if (articuloBuscado != null)
        {

            mensaje = ""; 


            String opciones2 = "Cantidad";
            Cant = Integer.parseInt(JOptionPane.showInputDialog(null, opciones2));

            control2.almacenaArticulos(codigo, descripcion, valor);
            ArrayList lista2 = control2.getcompra();

            for (int i = 0; i < lista2.size(); i++)
            {
                Articulo art2 = (Articulo) lista2.get(i);
                mensaje += "Codigo: " + art2.getproducto()
                        + "Descripcion:" + art2.getDescripcion()
                        + "VAlor:" + art2.getValor() * Cant + "\n";

            }
        }
        JOptionPane.showMessageDialog(null, mensaje);
    }
Y disculpa que no te pase el código pero creo que es mejor que intentes solucionar tu problema a que yo te lo entregue corregido. Intenta depurar el codigo así fué como encontre el problema y lo solucioné...
  #12 (permalink)  
Antiguo 23/03/2010, 12:26
Avatar de mss_lobaton85  
Fecha de Ingreso: abril-2009
Ubicación: Buenaventura
Mensajes: 41
Antigüedad: 15 años
Puntos: 0
Respuesta: Cambiar el nombre de un objeto dinamicamente

Voy a revisar cuidadosamente a ver cual es mi falla sin embargo muchisimas gracias

Etiquetas: dinamicamente, nombre, objeto
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 08:41.