Autor Tema: java ejercicio resuelto bucle iterator util concurrent modification CU00667B  (Leído 2786 veces)

@mayakoski

  • Sin experiencia
  • *
  • Mensajes: 43
    • Ver Perfil
Envío mi ejercicio CU00667B del curso de programación Java básico. Cualquier comentario será bienvenido.


Código: [Seleccionar]
package com.aprenderaprogramar;

public class TestListaCantantesFamosos {
public static void main(String[] args) {

ListaCantantesFamosos nuevaLista = new ListaCantantesFamosos("maya");
boolean continuar = true;

nuevaLista.adicionarCantante();
nuevaLista.adicionarCantante();

nuevaLista.muestraCantantes();

while(continuar) {
nuevaLista.adicionarCantante();
nuevaLista.muestraCantantes();
System.out.println("Desea ingresar mas cantantes (s) SI, (n) NO");
if (new GestionarEntrada().getEntrada().equalsIgnoreCase("n")) {
continuar= false;
}
}
}
}



Código: [Seleccionar]
package com.aprenderaprogramar;

import java.util.ArrayList;
import java.util.Iterator;

public class ListaCantantesFamosos {
CantanteFamoso datosCantante;
private String nombreUsuario;
private ArrayList<CantanteFamoso> listaCantantesFamosos = new ArrayList<CantanteFamoso> ();
GestionarEntrada entrada1;
GestionarEntrada entrada2;

public ListaCantantesFamosos(String pUsuario) {
setNombreUsuario(pUsuario);
}

//add
public void adicionarCantante() {
datosCantante = new CantanteFamoso();
System.out.println("Ingrese nombre del cantante: ");
entrada1 = new GestionarEntrada();
datosCantante.setNombre(entrada1.getEntrada());

System.out.println("Ingrese nombre del disco mas vendido: ");
entrada2 = new GestionarEntrada();
datosCantante.setDiscoConMasVentas(entrada2.getEntrada());

listaCantantesFamosos.add(datosCantante);
}

//getters
public String getNombreUsuario() {
return nombreUsuario;
}

public int getsize() {
return listaCantantesFamosos.size();
}

//setters
public void setNombreUsuario(String nombreUsuario) {
this.nombreUsuario = nombreUsuario;
}

public void muestraCantantes() {
Iterator<CantanteFamoso> it = listaCantantesFamosos.iterator();
CantanteFamoso cantanteTemporal;
while (it.hasNext()) { // Utilizamos el método hasNext de los objetos tipo Iterator
cantanteTemporal = it.next(); // Utilizamos el método next de los objetos tipo Iterator
System.out.println("Cantante: " + cantanteTemporal.getNombre() + " Disco con más ventas: " + cantanteTemporal.getDiscoConMasVentas());
}
}
}



Código: [Seleccionar]
package com.aprenderaprogramar;

import java.util.Scanner;

public class GestionarEntrada {
private String entrada;

public GestionarEntrada() {
pedirEntrada();
//getEntrada();
}

public void pedirEntrada() {
Scanner entradaTeclado1 = new Scanner(System.in);
setEntrada(entradaTeclado1.nextLine());
}

public String getEntrada() {
System.out.println(entrada);
return entrada;
}

public void setEntrada(String entrada) {
this.entrada = entrada;
}
}



Código: [Seleccionar]
package com.aprenderaprogramar;

public class CantanteFamoso {
private String nombre;
private String discoConMasVentas;

public CantanteFamoso() {
setNombre("desconocido");
setDiscoConMasVentas("desconocido");
}

public CantanteFamoso(String pnombre, String pDisco) {
setNombre(pnombre);
setDiscoConMasVentas(pDisco);
}

//Setter
public void setDiscoConMasVentas(String discoConMasVentas) {
this.discoConMasVentas = discoConMasVentas;
}

public void setNombre(String nombre) {
this.nombre = nombre;
}

//getter
public String getDiscoConMasVentas() {
return discoConMasVentas;
}

public String getNombre() {
return nombre;
}
}

« Última modificación: 09 de Octubre 2020, 14:26 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola, en relación a esta propuesta de solución, aunque el código funciona y realiza lo pedido en el enunciado del ejercicio, hay varios aspectos de diseño mejorables. Las observaciones serían:

a) La clase ListaCantantesFamosos tiene un atributo CantanteFamoso datosCantante; cuyo uso es más bien el de una variable auxiliar. Por tanto hubiera sido más lógico incluirla como variable local al constructor o métodos si fuera necesario (que realmente no lo es).

b) La clase ListaCantantesFamosos tiene como atributos GestionarEntrada entrada1; y GestionarEntrada entrada2; que no son lógicos para esta clase. Esta clase representa una lista de cantantes y dentro de sus atributos no parece lógico que estén estos objetos. Estos objetos debían ser gestionados más bien desde la clase con el main.

c) Tampoco es habitual que en métodos como adicionarCantante se muestren mensajes por consola, esto normalmente se gestiona desde otras clases o desde el main.

Puede verse una solución correcta para este ejercicio en https://aprenderaprogramar.com/foros/index.php?topic=2889.0

Saludos

 

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".