/**
* Clase principal para resolucion ejercicio CU00665B
*
* @author Hugo Segura
* @version (a version number or a date)
*/
public class TestListaCantantesFamosos
{
public static void main(String[] args){
ListaCantantesFamosos lista1 = new ListaCantantesFamosos();//Creo el objeto
System.out.println("Empecemos con el programa");
System.out.println("-------------------------");
System.out.println("Introduce el nombre de 2 cantantes famosos...");
System.out.println("Nombre del Cantante 1:");
EntradaDeTeclado entrada1 = new EntradaDeTeclado();
System.out.println("Nombre del Cantante 2:");
EntradaDeTeclado entrada2 = new EntradaDeTeclado();
System.out.println("\nMuchas Gracias...");
//agrego los nombres solicitados
lista1.agregarNombre(entrada1.getEntrada());
lista1.agregarNombre(entrada2.getEntrada());
System.out.println("\nEl listado de mis Cantantes Famosos mas los tuyos es el siguiente:\n");
lista1.listarNombres();//Listo todos los nombres
}
}
/**
* Clase para manipular la entrada por teclado
*
* @author aprenderaprogramar
* @version
*/
import java.util.Scanner;
public class EntradaDeTeclado
{
private String entradaTeclado;//variable de instancia de clase
//Constructor
public EntradaDeTeclado(){
entradaTeclado = "";
pedirEntrada();//Llamada a un metodo interno. Al crear el objeto automaticamente ejecutamos el metodo
}//cierre constructor
public void pedirEntrada(){//metodo de clase
Scanner entradaScanner = new Scanner(System.in);
entradaTeclado = entradaScanner.nextLine();
}//cierre pedir entrada
public String getEntrada(){return entradaTeclado;}//Cierre getEntrada
public String getPrimeraPalabra(){
for(int i = 0;i<entradaTeclado.length() -1;i++){
if(entradaTeclado.substring(i,i+1).equals(" ")){return entradaTeclado.substring(0,i+1);}
//si no se detecta ningun espacio se devuelve la cadena completa
}//cierre for
return entradaTeclado;
}//cierre get PrimeraPalabra
public int getLongitud(){//metodo de clase
return entradaTeclado.length();
}//cierre getLongitud
}
/**
* Clase generica de cantantes famosos
*
* @author Hugo Segura
* @version (a version number or a date)
*/
import java.util.ArrayList;
public class ListaCantantesFamosos
{
//Declaracion de variables
private String nombreDeLaLista = "CantantesFamosos";
private ArrayList<String> listadenombres;//Array de objetos string que va a guarar los nombres
//fin declaracion variables
//Constructor
public ListaCantantesFamosos(){
listadenombres = new ArrayList<String>();//creo el array
//Agrego 3 nombres por defecto
agregarNombre("David Gilmour");
agregarNombre("Brian Johnson");
agregarNombre("Rod Evans");
}//cierre constructor
//Metodo para agregar nombres a la lista
public void agregarNombre(String nombreCantante){
listadenombres.add(nombreCantante);
}//fin metodo agregarNombre
//Metodos para imprmir los nombres
public void listarNombres(){
//como no recibe parametros imprimo todos los nombres del listado
for(int i = 0; i < listadenombres.size();i++){
System.out.println(elNombre(i));
}
}//fin listarNombres
//Metodos para imprmir los nombres
public void listarNombres(int posicion){
//como recibe un parametro uso el metodo correspondiente para obtener un nombre
System.out.println(elNombre(posicion));
}//fin listarNombres
//Metodo que devuelve el nombre en una posicion especificada
//lo encapsulo para que usen el metodo listarNombres con o sin argumentos segun el listado que se necesite
private String elNombre(int posicion){
if (posicion >= 0 && posicion < listadenombres.size()){
return listadenombres.get(posicion);
}else{
return "No existe nombre para la posicion indicada";
}
}//fin elNombre
}
/**
* Clase para manipular la entrada por teclado
*
* @author aprenderaprogramar
* @version
*/
import java.util.Scanner;
/*Una clase debe de hacer lo que su nombre dice que es o que hace y no nada mas.*/
public class EntradaDeTeclado
{
//Constructor por defecto
public EntradaDeTeclado(){
/*Este constructor puede ser invocado aun si no estuviese declarado en esta clase, siempre y cuando
* no exista ningún otro constructor (con argumento/s) declarado en esta clase, se considera buena practica el declararlo */
}//cierre constructor por defecto
/*Este método retorna un String como resultado de lo que el usuario escriba por teclado*/
public String pedirEntrada(){//metodo de clase
Scanner entradaScanner = new Scanner(System.in);
String entradaTeclado;
entradaTeclado = entradaScanner.nextLine();
return entradaTeclado;
}//cierre pedir entrada
}
/**
* Clase generica de cantantes famosos
*
* @author Hugo Segura
* @version (a version number or a date)
*/
import java.util.ArrayList;
import java.util.List;
/*Para un buen programador, los métodos get y set de una variable de clase, no son opcionales
* Siempre han de ser declarados aun cuando se crean innecesarios*/
public class ListaCantantesFamosos
{
//Declaracion de variables
private List<String> listadenombres = new ArrayList<String>();/*Array de objetos string
que va a guarar los nombres*/
//fin declaracion variables
//Constructor
public ListaCantantesFamosos(){
//Agrego 3 nombres por defecto
/*No es logico crear un metodo agregarCantante, cuando java nos proporciona el
* metodo add(String value) para los tipo List, y realiza exactamente lo que necesitamos que es
* agregar un String al ArrayList de String, hacer esto se considera reinventar la rueda o
* redundancia*/
listadenombres.add("David Gilmour");
listadenombres.add("Brian Johnson");
listadenombres.add("Rod Evans");
}//cierre constructor
public List<String> getListadenombres() {
return listadenombres;
}
public void setListadenombres(List<String> listadenombres) {
this.listadenombres = listadenombres;
}
}
/**
* Clase principal para resolucion ejercicio CU00665B
*
* @author Hugo Segura
* @version (a version number or a date)
*/
/*La clase con el método main es la responsable de dirigir el flujo del programa y en este caso, responsable
* de realizar tareas con los valores de lo escrito por el usuario y de mostrar mensajes en pantalla*/
public class TestListaCantantesFamosos
{
public static void main(String[] args){
ListaCantantesFamosos lista1 = new ListaCantantesFamosos();//Creo el objeto
EntradaDeTeclado entradaDeTeclado = new EntradaDeTeclado();/*Con este unico objeto, pediremos
todas las entradas de datos al usuario (reutilizacion de código)*/
//Declaramos dos variables tipo String que contendrán cada una un valor escrito por el usuario
String entrada1, entrada2;//Si son de un mismo tipo, podemos declararlas en una sola linea, separadas por comas
System.out.println("Empecemos con el programa\n-------------------------\nIntroduce "
+ "el nombre de 2 cantantes famosos...\n\nNombre del Cantante 1:");
entrada1 = entradaDeTeclado.pedirEntrada();
System.out.println("Nombre del Cantante 2:");
entrada2 = entradaDeTeclado.pedirEntrada();
System.out.println("\nMuchas Gracias...");
//agrego los nombres solicitados
lista1.getListadenombres().add(entrada1);
lista1.getListadenombres().add(entrada2);
System.out.println("\nEl listado de mis Cantantes Famosos mas los tuyos es el siguiente:\n");
int i = 0;/*Usaremos esta variable como un contador en el for each (otra opción seria usar un bucle
for normal)*/
for(String cantante: lista1.getListadenombres()){//Usamos un for each para recorrer la lista de cantantes
i++;
System.out.println("Cantante " + i + ": " + cantante);//Listo todos los nombres
}
}
}