JAVA - ArrayList - Iterator - Error en consola

Iniciado por Santi73Arg, 21 Octubre 2017, 20:37 PM

0 Miembros y 1 Visitante están viendo este tema.

Santi73Arg



Hola chicos

Como les va?
Tengo una pregunta media idiota que la verdad me esta sacando la cabeza y no se si no logro ver algo realmente básico (me estoy ahogando en un vaso de agua o es mas complicado), o algo mas complejo...

Tengo la siguiente Clase Bebidas:

Código (java) [Seleccionar]


public class Bebidas{


private String nombre;
private float costo;


public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public float getCosto() {
return costo;
}
public void setCosto(float costo) {
this.costo = costo;
}


}


Y la clase main:

Código (java) [Seleccionar]
public class pruebasMAIN {

static ArrayList<Bebidas> bebidalist = new ArrayList<Bebidas>();
static int nbotella;
static Scanner keyboard = new Scanner (System.in);


public static void main(String[] args) {

System.out.println("Ingrese cantidad");
nbotella = keyboard.nextInt();
keyboard.nextLine();



for (int i = 0; i < nbotella; i++){

          System.out.println("Ingresar el nombre de la bebida "+ (i+1));
String botellabebida=keyboard.nextLine();
System.out.println("Ingresar el Costo de la bebida "+ (i+1));
float costobebida=keyboard.nextFloat();
keyboard.nextLine();

Bebidas pruebatest = new Bebidas();
pruebatest.setNombre(botellabebida);
pruebatest.setCosto(costobebida);

bebidalist.add(pruebatest);


}

Iterator<Bebidas> nombinterator = bebidalist.iterator();
while(nombinterator.hasNext()){
Bebidas elemento = nombinterator.next();
System.out.print(elemento+" / ");
}
}
}


Y en consola me muestra lo siguiente....:

Código (java) [Seleccionar]
Ingrese cantidad
2
Ingresar el nombre de la bebida 1
asdasd
Ingresar el Costo de la bebida 1
300
Ingresar el nombre de la bebida 2
ffffff
Ingresar el Costo de la bebida 2
200
pruebas.prueba@28d93b30 / pruebas.prueba@1b6d3586 /



No entiendo porque me muestra eso....  "pruebas.prueba@28d93b30 / pruebas.prueba@1b6d3586 /"  es como si no guardara los parámetros que le mando a la clase Bebidas... y me devuelve algo por defecto del IDE.
Capaz estoy haciendo algo mal...

ya intente instanciando bebidas como un objeto global <static Bebidas bebida = new Bebidas();>
Pero tampoco así...
Sera algo malo en la clase o bien en el iterator ???

Gracias

ivancea96

¿Cómo se supone que se debería ver tu clase "Bebidas" por pantalla?

Eso Java no lo sabe.

Cuando haces elemento+" / ", lo que realmente haces es elemento.toString() + " / ". Esa función toString (de la clase Object), por defecto, devuelve lo que ves.

Si quieres devolver tu propio valor, tienes que implementar tú la función:
Código (java) [Seleccionar]
@Override
public String toString() {

}


Y ahí ya devuelves lo que quieras.

Santi73Arg

Cita de: ivancea96 en 21 Octubre 2017, 21:12 PM
¿Cómo se supone que se debería ver tu clase "Bebidas" por pantalla?

Eso Java no lo sabe.

Cuando haces elemento+" / ", lo que realmente haces es elemento.toString() + " / ". Esa función toString (de la clase Object), por defecto, devuelve lo que ves.

Si quieres devolver tu propio valor, tienes que implementar tú la función:
Código (java) [Seleccionar]
@Override
public String toString() {

}


Y ahí ya devuelves lo que quieras.

Dios tenes razon! que idiotes fue, como no me di cuenta   :-[

Muchas gracias sos un genio !

rub'n

#3
Cita de: Santi73Arg en 22 Octubre 2017, 01:57 AM
Dios tenes razon! que idiotes fue, como no me di cuenta   :-[

Muchas gracias sos un genio !

hay tienes un ejemplillo aleatorio  :-X

Código (java) [Seleccionar]

package testing.foro;

import java.text.SimpleDateFormat;
import java.util.*;

public class Exec {

private static final Random R = new Random();
private static final Scanner LEER = new Scanner(System.in);
private static final String NAMES[] = {"Coca-cola","Pepsi","Gatorade","PoweRade","RedBull"};
private static final float COSTO[] = new float[]{45.5f, 500.9f, 99.99f,100f,500f,985.66f};
private static List<Bebidas> bebidas = new ArrayList<>();
private static Bebidas bebida;
private static final String FECHA = new SimpleDateFormat("dd MMM. yyyy hh:mm:ss a").format(new Date());
private int nBebidas;

public Exec() {
init();
}
private void init() {
print(FECHA+"\n");
print("Introduce numero de bebidas: ");
nBebidas = LEER.nextInt();
print("presiona cualquier tecla para empezar... "+"\n");
LEER.hasNext();
for(int f=0; f<nBebidas; f++) {
bebida = new Bebidas();
print("Ingrese Nombre de la bebida: ");
bebida.setNombre(NAMES[R.nextInt(NAMES.length)]);
print(bebida.getNombre()+"\n");
print("Ingrese Costo de la bebida: ");
bebida.setCosto(COSTO[R.nextInt(COSTO.length)]);
print(""+bebida.getCosto()+"\n");
bebidas.add(bebida);
}
print("\nBebidas Adquiridas son las siguientes:.");
bebidas.stream().forEach(b -> print(b));

}
private static <T> void print(final T s){System.out.print(s);}
public static void main(String[] args) {
new Exec();
}

}



Código (java) [Seleccionar]
22 nov. 2017 11:57:31 PM
Introduce numero de bebidas: 3
presiona cualquier tecla para empezar...

a
Ingrese Nombre de la bebida: Gatorade
Ingrese Costo de la bebida: 985.66
Ingrese Nombre de la bebida: Pepsi
Ingrese Costo de la bebida: 100.0
Ingrese Nombre de la bebida: PoweRade
Ingrese Costo de la bebida: 500.9

Bebidas Adquiridas son las siguientes:.
Nombre: Gatorade
Costo: 985.66
Nombre: Pepsi
Costo: 100.0
Nombre: PoweRade
Costo: 500.9
Process finished with exit code 0


rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen