Autor Tema: ¿se debe usar un índice numérico con un for extendido java? Ejercicio CU00666B  (Leído 3806 veces)

javalopez

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 19
    • Ver Perfil
Buenas noches, aquí les dejo el código de mi ejercicio...

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

public class ListaCantantesFamosos{
    private String nombreCantante;
    private ArrayList<String> listanombres;

    public ListaCantantesFamosos(String nombreCantante) {//construcor que recibe parametro desde main
        listanombres.add(nombreCantante);
    }

    public ListaCantantesFamosos(){ //constructor
        listanombres=new ArrayList<String>();
        listanombres.add("Bruce Dickinson");
        listanombres.add("Axel Rose");
        listanombres.add("Chaqueño Palavecino");
    }

    public void addNombre (String valorNombre) //Metodo para agregar nombres
    { listanombres.add (valorNombre); }

    public void ingresaCantantesFamosos(){
        Scanner escaner = new Scanner(System.in);
        nombreCantante = escaner.nextLine();

    }

    public void listarCantantes () {
        int i=0;
        for (String nombre: listanombres)
        {
            System.out.println ("Cantante " +(i+1)+": "+nombre);
            i++;
        }
    }
   
    public String getNombreCantante(){return nombreCantante;}
}


Código: [Seleccionar]
import java.util.Scanner;
public class TestListaCantantesFamosos{

    public static void main (String [ ] args) {

        Scanner entradaEscaner = new Scanner(System.in);
        String entradaTeclado="";
        ListaCantantesFamosos listaCantantes = new ListaCantantesFamosos();
        System.out.print("\f");
        System.out.println("La lista de cantantes famosos es la siguiente:");
        listaCantantes.listarCantantes();
        System.out.println ("Por favor introduzca un nombre de cantante famoso:");
        listaCantantes.ingresaCantantesFamosos();
        listaCantantes.addNombre(listaCantantes.getNombreCantante());

        System.out.println("La lista de cantantes famosos es la siguiente:");
        listaCantantes.listarCantantes();//metodo que lista mediante un for extendido
        System.out.println("Desea introducir otro cantante presione \"S/N\"");
        entradaTeclado = entradaEscaner.nextLine();
        do{
            if(entradaTeclado.substring(0, 1).equalsIgnoreCase("s")){
                System.out.println ("Por favor introduzca un nombre de cantante famoso:");
                listaCantantes.ingresaCantantesFamosos();
                listaCantantes.addNombre(listaCantantes.getNombreCantante());
                System.out.print("\f");
                System.out.println("La lista de cantantes famosos es la siguiente:");
                listaCantantes.listarCantantes();
                System.out.println("Desea introducir otro cantante presione \"S/N\"");
                entradaTeclado = entradaEscaner.nextLine();
            }
            else if(entradaTeclado.substring(0, 1).equalsIgnoreCase("n")){       
            }
            else{
                System.out.println("La opción elegida es incorrecta!!!");
                System.out.println("Desea introducir otro cantante presione \"S/N\"");
                entradaTeclado = entradaEscaner.nextLine();
            }
        }
        while(!entradaTeclado.substring(0, 1).equalsIgnoreCase("n"));
        System.out.println("Fin del programa!!!");
    } //Cierre del main
} //Cierre de la clase

Saludos y gracias por las correcciones y consejos, Ariel
« Última modificación: 22 de Junio 2015, 21:20 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola, tu código en general está bien.

Hay una cosa que no entiendo ¿Para qué tienes un atributo private String nombreCantante en la clase ListaCantantesFamosos? La clase representa una lista de nombres de cantantes famosos, no se ve lógico que tenga un atributo nombreCantante.


En la clase ListaCantantesFamosos usas esto:

Código: [Seleccionar]
       int i=0;
        for (String nombre: listanombres)
        {
            System.out.println ("Cantante " +(i+1)+": "+nombre);
            i++;
        }

En otros hilos del foro ya se ha comentado que si se usa un for de este tipo normalmente no se usan índices numéricos. En caso de usar índices numéricos es preferible usar un for tradicional.

Hay una cosa que podrías mejorar, te lo planteo como ejercicio. En la clase TestListaCantantesFamosos hay código en cierta medida repetido (para pedir que se introduzca un cantante famoso). La idea sería eliminar la repetición creando un método denominado pedirNombreCantanteFamoso que se encargue de pedir el nombre y devolver un String.

Saludos
« Última modificación: 17 de Septiembre 2015, 10:17 por César Krall »

 

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