Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - akira

Páginas: [1]
1
Bueno, aquí esta mi solución al ejercicio CU00667B del curso de java:

Código: [Seleccionar]
import java.util.ArrayList;
import java.util.Iterator;

public class ListaCantantes
{
    // Variables de instancia / atributos / campos
    private ArrayList<CantanteFamoso> listaCantantes;
    private String nombre;
   
    /**
     * Constructor for objects of class ListaCantantes
     */
    public ListaCantantes(String nombre)
    {
        this.nombre = nombre;
        listaCantantes = new ArrayList<CantanteFamoso>();
    }

    /**
     * Métodos
     */
    public void addCantante(CantanteFamoso objeto)
    {
        listaCantantes.add(objeto);
    }
   
    public void copiaValores(){
   
       Iterator<CantanteFamoso> copiaLista = listaCantantes.iterator();
       int indice = 0;
       
       while(copiaLista.hasNext()){
           
           CantanteFamoso cantante = copiaLista.next();
           System.out.println(indice + ") Cantante: " + cantante.getNombre() + " Disco con mas ventas: "
           + cantante.getDisco());
           indice +=1;
        }
    }
   
    public void valoresReales(){
       
        int indice = 0;
       
        for(CantanteFamoso cantante: listaCantantes){
       
            System.out.println(indice + ")" + cantante.getNombre());
            indice ++;
        }
    }
   
}

Código: [Seleccionar]
import java.util.Scanner;

public class CantanteFamoso
{
    // variables de instancia / atributos / campos
    private String nombre;
    private String disco;
   
    /**
     * Constructor
     */
    public CantanteFamoso()
    {
        setNombre();
        setDisco();
    }

    /**
     * Métodos
     */
    public void setNombre(){
       
        System.out.println("Ingrese nombre");
        Scanner entrada = new Scanner(System.in);
        nombre = entrada.nextLine();
    }
   
    public void setDisco(){
   
        System.out.println("Ingrese Disco");
        Scanner entrada = new Scanner(System.in);
        disco = entrada.nextLine();
    }
   
    public String getNombre(){return nombre;}
    public String getDisco(){return disco;}
}

Código: [Seleccionar]
import java.util.Scanner;

public class testIterator
{
    public static void main (String[] args){
   
       CantanteFamoso cantante1 = new CantanteFamoso();
       CantanteFamoso cantante2 = new CantanteFamoso();
       ListaCantantes lista = new ListaCantantes("cantantes Famosos");
       lista.addCantante(cantante1);
       lista.addCantante(cantante2);
       lista.copiaValores();
       CantanteFamoso cantante3 = new CantanteFamoso();
       lista.addCantante(cantante3);
       lista.copiaValores();
       
       boolean opcion = true;
       Scanner entrada = new Scanner(System.in);
       
       do{
         
           System.out.println("Desea ingresar mas cantantes S/N");
           String valorEntrada = entrada.nextLine();
           if(valorEntrada.equalsIgnoreCase("s")){
               
                CantanteFamoso cantante = new CantanteFamoso();
                lista.addCantante(cantante);
                lista.copiaValores();

           }else if(valorEntrada.equalsIgnoreCase("n")){
                break;
            }else{
                boolean error = true;
               
                while(error == true){
               
                    System.out.println("Entrada no valida");
                    System.out.println("Desea ingresar mas cantantes S/N");
                    valorEntrada = entrada.nextLine();
                    if(valorEntrada.equalsIgnoreCase("n")){
                        error = false;
                        opcion = false;
                    }else if(valorEntrada.equalsIgnoreCase("s")){
                        error = false;
                        CantanteFamoso cantante = new CantanteFamoso();
                        lista.addCantante(cantante);
                        lista.copiaValores();
                    }//CIerre if
           
                }//Cierre while
           
            }//Cierre if
           
        }while(opcion == true);
       
       System.out.println("Fin de la ejecucion");
    }//Cierre main
}//Cierre clase

aunque la verdadera razon de comentar aqui en el foro es que tengo una duda en esta parte:
Código: [Seleccionar]
CantanteFamoso cantante = new CantanteFamoso();
en entradas anteriores explicaban que a la hora de crear objetos se crea tanto el objeto como una variable que hace referencia a la direccion de memoria donde se almacena el objeto y es atraves de esa variable que podemos acceder a los metodos de ese objeto (si no entendi mal).
Entonces mi duda es que basicamente si encerramos ese codigo en un bucle y por ejemplo se ejecuta 5 veces, se crearian 5 objetos pero 1 sola variable referenciadora por lo que solo podria acceder al ultimo objeto que se creo (o por lo menos eso es lo que noto, no se si yo este equivocado) si por ejemplo yo escribiera:
Código: [Seleccionar]
cantante.getNombre();
obtendría el valor pero del ultimo objeto y los otros 4 quedaron inaccesibles. Entonces ¿como haría para crear mediante un bucle con una sola linea de codigo tanto el objeto como su correspondiente variable sin hacer esto?:

Código: [Seleccionar]
CantanteFamoso cantante1 = new CantanteFamoso();
CantanteFamoso cantante2 = new CantanteFamoso();
CantanteFamoso cantante3 = new CantanteFamoso();
CantanteFamoso cantante4 = new CantanteFamoso();
CantanteFamoso cantante5 = new CantanteFamoso();

yo deduzco que si esos objetos se almacenan en una lista o algo asi, se podría acceder a ellos recorriendo esa lista (ya sea con el for each o con Iterator) pero si yo quisiera acceder directamente al objeto quedan inaccesibles.

Páginas: [1]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".