Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Javieerg en 22 de Octubre 2015, 08:49
-
Este es mi código para el ejercicio CU00666B del curso. Batallé bastante, quisiera lo revisaran y me aconsejaran un poco, gracias.
Clase con arraylist:
import java.util.ArrayList;
import java.util.Scanner;
public class ListaCantantesFamosos2{
private String nombre;
private ArrayList<String> listaCantantes;
//ArrayList
public ListaCantantesFamosos2(){//ArrayList;
listaCantantes = new ArrayList<String>();
listaCantantes.add("Jose Jose");
listaCantantes.add("Luis Miguel");
listaCantantes.add("Enrique Iglesias");
}
//Teclado
public void Teclado(){
Scanner escaner = new Scanner(System.in);
nombre = escaner.nextLine();
}
//Agregar
public void addName(String valorName){
listaCantantes.add(valorName);
}
//Mostrar
public String getName(){return nombre;}
//Listar
public void crearLista(){
int i = 0;
for(String nombre: listaCantantes){
System.out.println("Cantante: " +nombre);i++;
}
}
}
Clase main
import java.util.ArrayList;
import java.util.Scanner;
public class TestForExtendido2{
public static void main(String []args){
System.out.println("Comenzando lista de cantantes");
//Inicializando objeto
ListaCantantesFamosos2 Cantantes = new ListaCantantesFamosos2();
Cantantes.crearLista();
System.out.println("Agregue otro cantante por favor");
Cantantes.Teclado();
Cantantes.addName(Cantantes.getName());
System.out.println("Se ha añadido otro cantante a la lista");
Cantantes.crearLista();
String respuesta = "";
Scanner escaner = new Scanner(System.in);
do {
System.out.println("Desea añadir otro cantante? S/N");
respuesta = escaner.nextLine();
if (respuesta.substring(0,1).equalsIgnoreCase("s")){
System.out.println("Añade cantante:");
Cantantes.Teclado();
Cantantes.addName(Cantantes.getName());
Cantantes.crearLista();
} else if (respuesta.substring(0,1).equalsIgnoreCase("n")){
System.out.println("Gracias");
} else {
System.out.println("Respuesta invalida");
}
} while (!respuesta.substring(0,1).equalsIgnoreCase("s"));
System.out.println("Fin del programa");
}
}
-
Hola Javieerg.
En la clase listaCantantesFamosos2, decirte que tendrías que cambiar algunas cosas, para empezar habría que quitar el método Teclado, ya creas un objeto Scanner en la clase del main, no es necesarios que crees otro en esta clase.
El método crearLista() se debería llamar mostrarLista() o algo parecido, porque es de lo que se encarga, de enseñar el contenido del ArrayList que hemos creado en el constructor de la clase, también en ese método usas i = 0, cosa que no usas posteriormente para nada.
En la clase Test
Según tienes la clase test ahora, después de añadir un cantante nuevo, cuando te pregunta "Desea añadir otro cantante? S/N", si respondemos que no, no hace caso y sigue preguntando lo mismo.
He realizado algunos cambios en tu código quedando así:
Clase ListaCantantesFamosos2()
import java.util.ArrayList;
public class ListaCantantesFamosos2{
private ArrayList<String> listaCantantes;
//ArrayList
public ListaCantantesFamosos2(){//ArrayList;
listaCantantes = new ArrayList<String>();
listaCantantes.add("Jose Jose");
listaCantantes.add("Luis Miguel");
listaCantantes.add("Enrique Iglesias");
}
//Agregar
public void addName(String valorName){
listaCantantes.add(valorName);
}
public void mostrarLista(){
for(String nombreCantante: listaCantantes){
System.out.println("Cantante: " +nombreCantante);
}
}
}
y la clase Test
import java.util.Scanner;
public class TestForExtendido2{
public static void main(String []args){
System.out.println("Comenzando lista de cantantes");
ListaCantantesFamosos2 nuevoCantante = new ListaCantantesFamosos2();
nuevoCantante.mostrarLista();
String respuesta = "";
Scanner escaner = new Scanner(System.in);
do {
System.out.println("Agregue otro cantante por favor");
nuevoCantante.addName(escaner.nextLine());
System.out.println("Se ha añadido otro cantante a la lista");
nuevoCantante.mostrarLista();
System.out.println("Desea añadir otro cantante? S/N");
respuesta = escaner.nextLine();
while(!respuesta.equalsIgnoreCase("s") && !respuesta.equalsIgnoreCase("n")){
System.out.println("Respuesta invalida");
System.out.println("Desea añadir otro cantante? S/N");
respuesta = escaner.nextLine();
}
} while (respuesta.equalsIgnoreCase("s"));
System.out.println("Fin del programa");
}
}
Espero que te sirva de ayuda.
Saludos.
-
Buenos Dias.
Este codigo no lo he hecho pero estaba intentando resolver el ejercicio y la verdad no se me ocurrio usar el metodo .EqualsIgnoreCase().
Quisiera saber como funciona este metodo.