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

Problema con uso de clases y arraylist

Estas en el tema de Problema con uso de clases y arraylist en el foro de Java en Foros del Web. Hola buenas tardes, estoy intentando hacer un pequeño programa para añadir prendas de vestir y que las muestre por pantalla. El problema que tengo es ...
  #1 (permalink)  
Antiguo 17/05/2012, 13:26
 
Fecha de Ingreso: noviembre-2011
Ubicación: Palma de Mallorca
Mensajes: 33
Antigüedad: 12 años, 5 meses
Puntos: 2
Problema con uso de clases y arraylist

Hola buenas tardes, estoy intentando hacer un pequeño programa para añadir prendas de vestir y que las muestre por pantalla. El problema que tengo es que no sé si lo estoy haciendo bien ya que no me imprime el arraylist

Mi código es este:



package ropa;
import java.util.*;

public class Prendas {
public int Id;
public String Marca;
public String Color;
public boolean Eliminar;
public ArrayList listadoprendas;

public Prendas(
int identificador,
String nuevaMarca,
String nuevoColor,
boolean nuevoEliminar
){
this.Id = identificador;
this.Marca = nuevaMarca;
this.Color = nuevoColor;
this.Eliminar = nuevoEliminar;
}


public void InsertarPrendas(Prendas prenda, ArrayList listado){
this.listadoprendas = listado;
listado.add(prenda);
}

}


Y este el Main:



package ropa;
import java.util.*;


public class PruebaPrendas {

public static void main(String[] args) {
Scanner stdin = new Scanner(System.in);
Scanner stdin2 = new Scanner(System.in);
Scanner stdin3 = new Scanner(System.in);
Scanner stdin4 = new Scanner(System.in);

ArrayList listado_prendas;
listado_prendas = new ArrayList();


int opcion = 0;
int identificador = 0;
String marca = "";
String color = "";
boolean elimado = false;
int i = 0;



do{

System.out.println("Para insertar 1,"
+ "\n" + "2 modificar, "
+ "\n" + "3 borrar, "
+ "\n" + "4 buscar , "
+ "\n" + "5 listar "
+ "\n" + "6 salir ");
opcion = stdin.nextInt();
if(opcion==1){
System.out.println("Marca: ");
marca = stdin2.nextLine();

System.out.println("Color: ");
color = stdin3.nextLine();

Prendas prenda = new Prendas(identificador, marca, color, false);
prenda.InsertarPrendas(prenda, listado_prendas);
Iterator ite = listado_prendas.iterator();
while(ite.hasNext()){
System.out.println(listado_prendas.get(i));
}

}
}
while(opcion!=6);
}
}


Saludos. Gracias.
  #2 (permalink)  
Antiguo 17/05/2012, 14:00
Avatar de Lalounam  
Fecha de Ingreso: mayo-2012
Ubicación: México D.F.
Mensajes: 59
Antigüedad: 12 años
Puntos: 19
Respuesta: Problema con uso de clases y arraylist

Aquí hay varios detalles:

1-Como buena práctica pon el tipo de objeto que contendrá el ArrayList, según veo éste sería ( ArrayList<Prendas> myArrayList = new ArrayList<Prendas>();

2-Tu método insertarPrendas por alguna razón recibe un objeto de la misma clase, es decir: Prendas y un arrayList que se supone contiene las prendas, después la instancia que llamó al método asigna el arrayList que le pasaste como parámetro a su propio arrayList donde por cierto insertas el objeto que pasaste como parámetro.

Yo te recomendaría que replantearas qué deseas hacer, si quieres incluir un grupo de Prendas en le ArrayList, no es necesario (de hecho no es conveniente) que cada objeto Prendas tuviera su propia lista de Prendas, suena un poco complicado.

3-Y finalmente, no es posible imprimir en pantalla un Objeto directamente con System.out.println(), ahorita no te imprime nada porque nunca agregaste elementos al objeto listado_prendas (no te manda NullPointerException porque lo inicializaste, sino también). Pintaría el objeto directamente que es una cosa rara "[email protected]" algo así.

En casos como esos tienes que definir un toString() en el objeto he invocarlo en el System.out.println(), para que se pinte su contenido con un formato.

PD en java son malas prácticas usar guiones bajos, se utliza el standar Camel que pide que si hay varias palabras: cadaQueComienzaUnaLoHaceConMayusculaYSinEspacio

Saludos.

Etiquetas: arraylist, clases, programa, string
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 19:26.