Autor Tema: Código ejemplo del for extendido en Java y equalsIgnoreCase Ejercicio (CU00666B)  (Leído 3700 veces)

Dan_SB

  • Avanzado
  • ****
  • Mensajes: 273
  • *<DanielsCK>*
    • Ver Perfil
Buenas noches!!!

Otro dato nuevo que ver!! en mi vida había visto otro tipo de for  ???... El enunciado dice así:

Citar
Crea una clase denominada ListaCantantesFamosos que al ser inicializada contenga un ArrayList con tres Strings que sean el nombre de cantantes famosos. Crea una clase test con el método main que inicialice un objeto ListaCantantesFamosos y usando un for extendido muestre los cantantes en la lista por pantalla. Se debe pedir al usuario un nombre más de cantante famoso, y una vez introducido mostrar la lista actualizada usando un for extendido. Una vez mostrada la lista actualizada, se debe dar opción a elegir entre volver a introducir otro cantante o salir del programa (se podrán introducir tantos cantantes como se desee, para ello usa un bucle while que dé opción a elegir al usuario).


La clase Lectores para leer datos:

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

public class Lector {
    public String LeerCadena(){
        Scanner in = new Scanner(System.in);
        return in.nextLine();
    }
}

Clase ListaCantantesFamosos:
Código: [Seleccionar]
package ArrayObject;
import java.util.ArrayList;

public class ListaCantantesFamosos {
    ArrayList <String> cantantes;
    public ListaCantantesFamosos(){
        cantantes = new <String> ArrayList(2);
    }
   
    public void setCantante(String name){
        cantantes.add(name);
    }
   
    public int getTamaño(){
        return cantantes.size();
    }
   
    public String getCantante(int index){
        if (index >= 0 && index < cantantes.size()){
            return cantantes.get(index);
        }
        else{return "No existe cantante en esta casilla.";}
    }
   
    public void removerCantante(int index){
        if (index >= 0 && index < cantantes.size()){
            cantantes.remove(index);
        }
        else{}
    }
}


Clase test:

Código: [Seleccionar]
package ArrayObject;

public class Test {
    public static void main(String[]args){
        Lector leer = new Lector();
        ListaCantantesFamosos Lista = new ListaCantantesFamosos();
        int no = 0; String dato;
        Lista.setCantante("Ruben Blades");
        Lista.setCantante("Shakira");       
        while(no < 1){
            int si = 0;
            System.out.println("Ingresa un cantante famoso!!");
            dato = leer.LeerCadena();
            System.out.println("   ");
            Lista.setCantante(dato);
            int i = 0;
            for(String data: Lista.cantantes){
            System.out.println(i+1 + ". " + data + ".");
            i++;
        }
            System.out.println("   ");
            while(si < 1 && no < 1){
            System.out.print("Escriba \"Si\" para agregar otro artista, de lo contrario, escriba \"No\" para salir del programa: ");
            dato = leer.LeerCadena();           
            if (dato.equalsIgnoreCase("no") == true){no++;}
            else if (dato.equalsIgnoreCase("si") == true){si++; System.out.println("  ");}
            else System.out.println("Entrada Desconocida. Intentelo de nuevo.");
            }
        }
        System.out.println("Adios!!!");
        }       
    }

Su ejecución es así:





Pude haber usado variables booleanas para el si y no, en ves de esas variables enteras "Switch" tambien. Por cierto, se preguntaran, ¿Para que declare la variable i dentro del while?... era para que me pudiese salir así:

1.
2.
3.
4.
5. . .

Esta parte se podia colocar asi y funcionaba igual:

Código: [Seleccionar]
package ArrayObject;

public class Test {
    public static void main(String[]args){
        Lector leer = new Lector();
        ListaCantantesFamosos Lista = new ListaCantantesFamosos();
        int no = 0; String dato;
        Lista.setCantante("Ruben Blades");
        Lista.setCantante("Shakira");       
       [b] while(no < 1){
            int si = 0, i = 1;
            System.out.println("Ingresa un cantante famoso!!");
            dato = leer.LeerCadena();
            System.out.println("   ");
            Lista.setCantante(dato);       
            for(String data: Lista.cantantes){
            System.out.println(i + ". " + data + ".");
            i++;
        }[/b]
            System.out.println("   ");
            while(si < 1 && no < 1){
            System.out.print("Escriba \"Si\" para agregar otro artista, de lo contrario, escriba \"No\" para salir del programa: ");
            dato = leer.LeerCadena();           
            if (dato.equalsIgnoreCase("no") == true){no++;}
            else if (dato.equalsIgnoreCase("si") == true){si++; System.out.println("  ");}
            else System.out.println("Entrada Desconocida. Intentelo de nuevo.");
            }
        }
        System.out.println("Adios!!!");
        }       
    }

Solo quería ver exactamente que significaba el "i+1" jugando un poco. jajaja!!

Cualquier corrección no duden en decírmelo!
« Última modificación: 26 de Mayo 2015, 23:58 por Alex Rodríguez »
"Luchar por tus sueños y cumplirlos... eso es vivir.."

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:Ejercicio (CU00666B), El for extendido!
« Respuesta #1 en: 09 de Abril 2015, 00:07 »
Hola Dan

En tu ejercicio cumples las peticiones del enunciado gestionando la lista de cantantes famosos. Bien.

Dan, voy a comentar detalles de tu código para que puedan mejorar si cabe.

Tu clase Lector, es sencilla y operativa al 100%, no tiene ningún defecto. Es posible que hayas oido hablar de las convenciones a la hora de bautizar los métodos en Java.
Siguiendo esa convención tu método:
    LeerCadena()
debería llamarse:
    leerCadena()
----
En tu clase ListaCantantesFamosos la siguiente instrucción:
    cantantes = new <String> ArrayList(2);
provoca un warning, que se elimina al remodelarla así:
    cantantes = new  ArrayList<String>(2);

Tienes en esta clase un método:
    setCantante(String name)
que parece un setter cuando no lo es, sería mejor llamarlo
    añadirCantante, addCantante, incluirCantante, o algo por el estilo indicando que su tarea es esa, añadir un nuevo cantante.
----
En la clase Test creas la instancia 'Lista' de tipo ListaCantantesFamosos que siguiendo la convención camelCase debería llamarse 'lista'

El siguiente código:
Código: [Seleccionar]
            int i = 0;
            for(String data: Lista.cantantes){
                System.out.println(i+1 + ". " + data + ".");
                i++;
            }
aunque escueto, debería formar parte de la clase ListaCantantesFamosos pues manipula datos de esa clase. Por cierto el atributo de esa clase 'cantantes' debería ser private y no ser accesible directamente desde la clase Test.

En esta clase, la variable 'si' se inicializa en cada bucle y no toma parte en ninguna decisión del código, si fuera eliminada, el programa funcionaria exactamente igual.

Saludos

Dan_SB

  • Avanzado
  • ****
  • Mensajes: 273
  • *<DanielsCK>*
    • Ver Perfil
Re:Ejercicio (CU00666B), El for extendido!
« Respuesta #2 en: 09 de Abril 2015, 02:12 »
Copiado sus comentarios, muchisimas gracias!!
"Luchar por tus sueños y cumplirlos... eso es vivir.."

 

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