Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: el_calderas en 24 de Febrero 2015, 21:54

Título: Ejercicio CU00666B for each java ejemplo for extendido
Publicado por: el_calderas en 24 de Febrero 2015, 21:54
Hola.
Aqui mando los codigos de este ejercicio. La verdad es que lo veo muy repetitivo en la clase del main y ademas, me ha costado mucho ver como implementar la elección con un while....se hace, pero no me gusta como ha quedado. Pero no se me ocurre otra forma de hacerlo. Me vendrian bien algunas sujerencias.
Un saludo.

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

public class ListaCantantesFamosos
{
    private String nombreLista;//establecemos un atributo nobre de la lista
    private ArrayList<String> listaCantantes;//declaramos un ArrayList que contiene objetos Strnig
   
    public ListaCantantesFamosos(String nombre){
        nombreLista=nombre;
        listaCantantes=new ArrayList<String>();//creamos el objeto de tipo ArrayList
       
        listaCantantes.add("Madonna");
        listaCantantes.add("Queen");
        listaCantantes.add("Bruce Springsteen");
       
    }
   
    public void addNombre(String nombre){
        listaCantantes.add(nombre);
    }
    public String getNombre(int posicion){//metodo para obtener un nombre de la lista, segun su indicie
        if(posicion>=0 && posicion<listaCantantes.size()){
            return listaCantantes.get(posicion);
        }else{
            return "No existe nombre para la posición solicitada";
        }
    }
   
    public void listarNombres(){
        for (String nombre:listaCantantes){
            System.out.println(nombre);
        }
    }
   
}

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

public class testListaCantantes
{
    public static void main(String[]args){
        ListaCantantesFamosos lista=new ListaCantantesFamosos("Lista cantantes");
        lista.addNombre("Bon Jovi");//añado un mobre mas a la lista...probando...

        System.out.println("La lista esta formada por estos nombres:");
        lista.listarNombres();

        System.out.println("Introducir un nuevo nombre a la lista");
        Scanner sc=new Scanner(System.in);
        String newNombre=sc.nextLine();
        lista.addNombre(newNombre);
        System.out.println("La lista esta formada por estos nombres:");
        lista.listarNombres();

        boolean aux=true;
        while(aux==true){
            System.out.println("¿Quieres introducir más nombres? S/N");
            String eleccion=sc.nextLine();

            if(eleccion.equalsIgnoreCase("S")){//equalsIgnoreCase es el metodo para comparar sin tener en cuenta si es mayusculas o minusculas
                System.out.println("Introducir un nuevo nombre a la lista");
                String newN=sc.nextLine();
                lista.addNombre(newN);

                System.out.println("La lista esta formada por estos nombres:");
                lista.listarNombres();
                aux=true;
            }else{
                aux=false;//siempre que la respuesta no sea S, se saldra del programa.
            }

        }

    }
}

Título: Re:Ejercicio CU00666B for each java ejemplo for extendido
Publicado por: Ogramar en 25 de Febrero 2015, 08:40
Hola, el código lo veo bien planteado y la elección en el while está bien planteada en el while (puedes ver que es una solución habitual, por ejemplo aquí también se usa: www.aprenderaprogramar.com/foros/index.php?topic=1552). La sugerencia es que sigas avanzando con el curso porque esto está bien! Salu2