Buenas!!
Bueno he estado haciendo los ejercicios de Java y me tope con una cuestion extraña. Aqui dejo el codigo:
import java.util.Scanner;
import java.util.Iterator;
public class Main
{
public static void main(String [ ] args)
{
ListaCantantesFamosos objeto=new ListaCantantesFamosos();
Scanner ingresoTeclado=new Scanner(System.in);
CantanteFamoso cantante=new CantanteFamoso();
System.out.print("Ingrese primer cantante extra: ");
System.out.print("\nNombre: ");
cantante.setNombre(ingresoTeclado.nextLine());
System.out.print("Disco con mas ventas: ");
cantante.setDiscoConMasVentas(ingresoTeclado.nextLine());
objeto.añadirObjetoLista(cantante);
System.out.print("Ingrese segundo cantante extra: ");
System.out.print("\nNombre: ");
cantante.setNombre(ingresoTeclado.nextLine());
System.out.print("Disco con mas ventas: ");
cantante.setDiscoConMasVentas(ingresoTeclado.nextLine());
objeto.añadirObjetoLista(cantante);
objeto.leerLista();
}
}
Cuando utilizo este codigo e ingreso los nombres de los cantantes y sus discos, lo que ocurre es que al mostrarlos me muestra ambos objetos iguales al segundo. Pero si modifico el codigo asi:
import java.util.Scanner;
import java.util.Iterator;
public class Main
{
public static void main(String [ ] args)
{
ListaCantantesFamosos objeto=new ListaCantantesFamosos();
Scanner ingresoTeclado=new Scanner(System.in);
CantanteFamoso cantante=new CantanteFamoso();
System.out.print("Ingrese primer cantante extra: ");
System.out.print("\nNombre: ");
cantante.setNombre(ingresoTeclado.nextLine());
System.out.print("Disco con mas ventas: ");
cantante.setDiscoConMasVentas(ingresoTeclado.nextLine());
objeto.añadirObjetoLista(cantante);
[b]cantante=new CantanteFamoso();[/b]
System.out.print("Ingrese segundo cantante extra: ");
System.out.print("\nNombre: ");
cantante.setNombre(ingresoTeclado.nextLine());
System.out.print("Disco con mas ventas: ");
cantante.setDiscoConMasVentas(ingresoTeclado.nextLine());
objeto.añadirObjetoLista(cantante);
objeto.leerLista();
}
}
En negritas coloque la linea que agregue. Hacer esto me parece algo extraño y a mi entender esta mal, pero aun asi funciona bien y no como en el primer ejemplo.
En sintesis en el primer caso uso la misma variable para ambos ingresos, ingreso el primer nombre y el primer disco y los agrego a la lista y luego uso la misma variable e ingreso el segundo nombre y segundo disco y los agrego a la lista, pero al mostrar la lista me muestra ambos objetos iguales al segundo objeto que cargue.