Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: ronal.d87 en 29 de Septiembre 2018, 05:15
-
Propuesta de solución al ejercicio CU0666B del curso básico de programación Java de aprenderaprogramar.
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)
Clase Test
package ejemplo01;
import java.util.Scanner;
/**
*
* @author Ronnie
*/
public class TestListaCantantes66B {
public static void main(String[] args) {
ListaCantantesFamososCU00666B listado = new ListaCantantesFamososCU00666B();
int j = 0;
int k = 0;
String cantante, opcion;
Scanner nombre = new Scanner(System.in);
Scanner sc = new Scanner(System.in);
System.out.println("Listado de cantantes actual");
for(String nombres: listado.listaCantantes){
System.out.println((j+1)+": "+nombres);
j++;
}
do{
System.out.println("Ingrese nombre cantante:");
cantante = nombre.nextLine();
listado.agregarNombre(cantante);
System.out.println("La nueva lista es");
if(k==0){
for (String nombres: listado.listaCantantes){
System.out.println((k+1)+": "+nombres);
k++;
}
}else{
k =0;
for(String nombres: listado.listaCantantes){
System.out.println((k+1)+": "+nombres);
k++;
}
}
System.out.println("Desea volver a introducir otro cantante: s/n");
opcion = sc.nextLine();
}
while(opcion.equalsIgnoreCase("s"));
}
}
Clase Lista Cantantes Famosos
package ejemplo01;
import java.util.ArrayList;
/**
*
* @author Ronnie
*/
public class ListaCantantesFamososCU00666B {
ArrayList <String> listaCantantes;
String nombreCantante;
public ListaCantantesFamososCU00666B() {
listaCantantes = new ArrayList<String>();
listaCantantes.add("Juan");
listaCantantes.add("Diego");
listaCantantes.add("Maria Angel");
}
public void agregarNombre(String nommbreCantante ){
listaCantantes.add(nommbreCantante);
}
public String obtenerNombre (int posicion){
if(posicion >= 0 && posicion<listaCantantes.size()){
return listaCantantes.get(posicion);
}else{
return "no hay nombres";
}
}
}
-
Buenas, para quien revise este ejercicio, hay varias cosas incorrectas en cuanto a que no se adapta a las propuestas del curso y/o a los estándares habituales adoptados por convención en la programación Java.
En la clase ListaCantantesFamososCU00666B hay un atributo String nombreCantante; que no tiene mucho sentido, de hecho ni siquiera es utilizado (por tanto, sobra).
Otro incumplimiento de las propuestas del curso es no declarar los atributos de clase con el modificador private. Debería usarse private ArrayList <String> listaCantantes; en lugar de ArrayList <String> listaCantantes;
Y derivado de lo anterior, deberían usarse métodos get en lugar del acceso directo a atributos (como se hace por ejemplo en la clase test donde se invoca listado.listaCantantes
Otra cosa de diseño poco acertado es en la clase test usar el bucle for-each con el condicional if (k==0). Esto es una complicación innecesaria para el código.
Puede verse una solución correcta de este ejercicio en https://aprenderaprogramar.com/foros/index.php?topic=2262.0
Salu2