Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: ronal.d87 en 19 de Junio 2015, 07:58
-
HOLA, aqui el desarrollo del ejercicio
clase ListaCantantesFamosos
package ejemplo;
import java.util.ArrayList;
import java.util.Scanner;
public class ListaCantantesFamosos {
ArrayList <String> nombreCantantes;
String shakira = "Shakira", chayane = "Chayane", mark = "Mark", nuevo = "";
Scanner solicitud;
public ListaCantantesFamosos (){//Metodo constructor
nombreCantantes = new ArrayList<>();
nombreCantantes.add(mark);
nombreCantantes.add(shakira);
nombreCantantes.add(chayane);
}
//ingresamos los nuevos cantantes por teclado
public void ingresarCantantes(){
solicitud = new Scanner(System.in);
nuevo = solicitud.nextLine();
}
//agregamos los cantantes a la lista
public void agregarCantantes(String nombre){
nombreCantantes.add(nombre);
}
//retorna los valores ingresados por teclado
public String recibirNombres(){
return nuevo;
}
//muestra los valores agregados a la lista
public void muestraCantantes (){
for(int i = 0; i < nombreCantantes.size(); i++){
System.out.println("la nueva lista es: "+nombreCantantes.get(i));
}
}
}
clase testCantantesFamosos
package ejemplo;
public class TestLista {
public TestLista(){
}
public static void main (String [] Argumentos){
ListaCantantesFamosos listaCantantesFamosos = new ListaCantantesFamosos();
System.out.println("La lista de cantantes es es"+listaCantantesFamosos.nombreCantantes);
for(int i = 0; i <2; i++){
System.out.println("ingrese los nombres ");
listaCantantesFamosos.ingresarCantantes();
listaCantantesFamosos.agregarCantantes(listaCantantesFamosos.recibirNombres());
}
listaCantantesFamosos.muestraCantantes();
}
}
-
Hola ronal, hay un detalle que debes tener en cuenta.
Lo que declaras después de public class son atributos de clase:
public class ListaCantantesFamosos {
ArrayList <String> nombreCantantes;
String shakira = "Shakira", chayane = "Chayane", mark = "Mark", nuevo = "";
Scanner solicitud;
Eso significa que todos los objetos que se creen con new llevarán esos atributos. Pero tiene poco sentido que todos los objetos tengan como atributo shakira = "shakira"
Por ello será preferible dejar como atributo aquello que es necesario para representar la clase: la clase representa una lista de nombres de cantantes y por ello el único atributo que necesita es ArrayList <String> nombreCantantes;
Los otros valores que has declarado como atributos debes trasladarlos como variables locales de métodos o constructores, de esa forma no aparecen como atributos de clase.
Podríamos escribir esto:
public ListaCantantesFamosos (){//Metodo constructor
String shakira = "Shakira", chayane = "Chayane", mark = "Mark",
nombreCantantes = new ArrayList<>();
nombreCantantes.add(mark);
nombreCantantes.add(shakira);
nombreCantantes.add(chayane);
}
Pero es preferible no crear variables sino usar directamente los String si no queremos las variables para otra cosa.
public ListaCantantesFamosos (){//Metodo constructor
nombreCantantes = new ArrayList<>();
nombreCantantes.add("Mark");
nombreCantantes.add("Shakira");
nombreCantantes.add("Chayane");
}
El caso de solicitud lo resolveríamos así:
public void ingresarCantantes(){
Scanner solicitud = new Scanner(System.in);
nuevo = solicitud.nextLine();
}
El atributo nuevo también se puede eliminar. Para ello tendrías que hacer la adición del nombre a la lista en el mismo momento en que se recibe el nombre por teclado. Puedes fijarte en este ejercicio resuelto como referencia: https://www.aprenderaprogramar.com/foros/index.php?topic=1549
Saludos