Autor Tema: Java diferencia entre el for extendido y el for tradicional Ejercicio CU00666B  (Leído 3266 veces)

rubens23

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 30
    • Ver Perfil
EL FOR EXTENDIDO O BUCLES FOR EACH EN JAVA: EJERCICIO


Clase lista cantantes famosos

Código: [Seleccionar]
package aprender;

import java.util.*;
public class ListaCantantesFamosos {

private ArrayList<String> listaDeCantantes;
   
    public ListaCantantesFamosos(){
        listaDeCantantes = new ArrayList<String>();
    }
    public void addNombre (String valor_nombre){
        listaDeCantantes.add(valor_nombre);
    }
    public String getNombre (int posicion){
        if (posicion >= 0 && posicion < listaDeCantantes.size()){
            return listaDeCantantes.get(posicion);
        }
        else {
        return "No existe nombre para la posicion solicitada";
    }
    }
     public void listar() {
    int i=0;
         for (String nombre:listaDeCantantes) {
             System.out.println("Cantante "+(i+1)+"- "+nombre);
             i++;
         }
     }
   
    public int getTamaño (){
        return listaDeCantantes.size();
    }
     public void removeNombre (int posicion) {  //Método
        if (posicion >= 0 && posicion < listaDeCantantes.size() ) {
            listaDeCantantes.remove(posicion); }
        else { }
    }
}

Clase test con main
Código: [Seleccionar]
package aprender;
public class TestListaCantantes{

public static void main ( String [ ] args){
EntradaDeTeclado resp;
        System.out.println("Empezamos el programa");
        ListaCantantesFamosos lista1 = new ListaCantantesFamosos();
        lista1.addNombre("Juan");
        lista1.addNombre("Ramón");
        lista1.addNombre("Pedro");
        System.out.println ("Los jugadores de baloncesto en la lista son: ");
lista1.listar();
System.out.println("Añada un nombre de cantante más");
EntradaDeTeclado entrada = new EntradaDeTeclado();
        lista1.addNombre(entrada.getEntrada());
        System.out.println("Nombre de los cantantes introducidos son: " );
        lista1.listar();
        System.out.println("¿Desea introducir otro nombre más?(si/no)");
        EntradaDeTeclado respuesta = new EntradaDeTeclado();
        if (respuesta.getEntrada().equals("si")){
do {   
           
            System.out.println("Ingrese el nombre del cantante");
            EntradaDeTeclado entradaTeclado = new EntradaDeTeclado();
            lista1.addNombre(entradaTeclado.getEntrada());
            lista1.listar();
            System.out.println("¿Desea añadir un nuevo cantante? (si/no)");
            resp = new EntradaDeTeclado();
           
       
        }while(resp.getEntrada().equals("si"));
        }
}}
       
       
« Última modificación: 10 de Junio 2015, 08:15 por Alex Rodríguez »

Dan_SB

  • Avanzado
  • ****
  • Mensajes: 273
  • *<DanielsCK>*
    • Ver Perfil
Hola rubens!

Primero que nada, asegúrate subir todas las clases de tu código. Veo que en tu clase test, usas una clase "EntradaDeTeclado", para poder probarlo, tuve que usar scanners. Bueno empezando por el código:

La clase "ListaCantatesFamosos" todo bien, pero a la hora de ejecutar tu prueba o la clase "TestListaCantantes", aparecen los errores:



Como se pudo ver, solo una parte del código funciono correctamente... Ahora, en tu código puedo ver una repetición... para poder probarlo, yo lo desarrollaría de la siguiente manera:

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

public class Main {
 public static void main ( String [ ] args){
Scanner resp = new Scanner(System.in);
        String dato = ""; boolean A = false, B = false;
        System.out.println("Empezamos el programa");
        ListaCantantesFamosos lista1 = new ListaCantantesFamosos();
        lista1.addNombre("Ruben Blades");
        lista1.addNombre("Soda Estereo");
        lista1.addNombre("Ricky Martin");
        System.out.println("La lista de los cantantes en la lista son: ");
        lista1.listar();
        do{
            B = false; A = false;
            System.out.print("Ingrese otro cantante mas: ");
            dato = resp.nextLine();     
            lista1.addNombre(dato); 
            lista1.listar();
            while(B == false){
            System.out.println("¿Desea ingresar otro cantante?");
            dato = resp.nextLine();
            if(dato.equalsIgnoreCase("Si")){A = false; B = true;}
            else if(dato.equalsIgnoreCase("No")){A = true; B = true;}
            else System.out.println("Caracter desconocido.");
        }
        }while(A == false);
 }
}

Compilado quedaría así:


La variable booleana "A", manejara el bucle para añadir cantantes mientras que la variable Booleana "B", manejara la toma de desicion de si o no. Existen muchísimas formas mas de resolverlo... esta es la mía... directamente de mi lógica. (Recordad que existen lógicas parecidas... pero jamas iguales.)

Por ultimo, porque si el enunciado habla de cantantes, tienes jugadores de baloncesto?  ???

Saludos!
"Luchar por tus sueños y cumplirlos... eso es vivir.."

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:CU00666B
« Respuesta #2 en: 10 de Junio 2015, 08:14 »
Hola rubens ya se comenta en otros hilos pero en el fragmento

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

Ten en cuenta que un for extendido se suele usar para prescindir de variable contadora como i. Si se quiere una variable contadora es preferible utilizar el for tradicional

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

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