Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: rubens23 en 08 de Junio 2015, 20:07
-
EL FOR EXTENDIDO O BUCLES FOR EACH EN JAVA: EJERCICIO
Clase lista cantantes famosos
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
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"));
}
}}
-
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:
(http://i.imgur.com/V5a5Npg.png)
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:
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í:
(http://i.imgur.com/bwJvtm9.png)
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!
-
Hola rubens ya se comenta en otros hilos pero en el fragmento
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
for (int i=0; i<listaDeCantantes.size(); i++ {
System.out.println("Cantante "+(i+1)+"- "+nombre);
i++;
}
Saludos