Foros aprenderaprogramar.com
		Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: LuisM en 02 de Junio 2017, 23:45
		
			
			- 
				Hola a todos !!! paso a dejar el código del ejercicio CU00666B del curso básico de aprendizaje Java con BlueJ, con modificaciones en la clase EntradaDeTeclado. Se agregó la entrada de numeros, se anuló pedirEntrada en el constructor. Falta la captura de errores pero todavía no llegamos a ese tema en el curso.
 
 Desde ya muchas gracias
 
 Saludos Luis
 
 
 Clase Test (main)
 
 //Test del for extendido ejemplo aprenderaprogramar.com
 public class Test {
 public ListaCantantesFamosos cantantes;
 public EntradaDeTeclado entrada;
 public static void main (String [] Args) {
 int opcion=0;
 ListaCantantesFamosos cantantes = new ListaCantantesFamosos();
 EntradaDeTeclado entrada = new EntradaDeTeclado();
 while (opcion!=3) {
 System.out.println (" 1- agrega un cantante famoso");
 System.out.println (" 2- lista los cantantes famosos");
 System.out.println (" 3- finaliza");
 System.out.println (" Ingrese Opcion");
 entrada.pedirNumero();
 opcion = entrada.getNumero();
 switch (opcion) {
 case 1:
 System.out.println ("Ingrese un nombre de Cantante");
 entrada.pedirEntrada();
 cantantes.addNombre(entrada.getEntrada());
 break;
 
 case 2:
 cantantes.listaNombres();
 break;
 
 case 3:
 System.out.println ("El programa ha finalizado");
 break;
 
 default:
 break;
 } //Cierre del switch
 System.out.println ("-------------------------------");
 } // cierre del while
 }//finalizacion main
 } //Cierre de la clase
 
 
 
 Clase EntradaDeTeclado (modificada)
 
 import java.util.Scanner; //Importación del código de la clase Scanner desde la biblioteca Java
 // Definimos una clase EntradaDeTeclado aprenderaprogramar.com
 public class EntradaDeTeclado {
 private String entradaTeclado; //Variable de instancia (campo) de la clase
 private int entradaNumero;
 public EntradaDeTeclado ()  { //Constructor
 entradaTeclado="";
 entradaNumero=0;
 //   pedirEntrada(); //Esto es una llamada a un método interno. Al crear un objeto ejecutamos el método
 } //Cierre del constructor
 public void pedirEntrada ()  {  //Método de la clase
 Scanner entradaEscaner = new Scanner (System.in);
 entradaTeclado = entradaEscaner.nextLine ();
 } //Cierre del método pedirEntrada
 public void pedirNumero (){
 Scanner entradaEscaner = new Scanner (System.in);
 entradaNumero = entradaEscaner.nextInt ();
 }
 public String getEntrada () { return entradaTeclado; } //Cierre del método getEntrada
 
 public int getNumero() {return entradaNumero;}
 
 public String getPrimeraPalabra ()  {
 for (int i=0; i < entradaTeclado.length() - 1; i++) {
 if (entradaTeclado.substring (i, i+1).equals(" ") ) {     //IMPORTANTÍSIMO: COMPARAMOS CON EQUALS
 return entradaTeclado.substring(0, i+1);         }
 }
 return entradaTeclado;  //Caso de que no se detecte ningún espacio devolvemos lo que haya
 } //Cierre del método getPrimeraPalabra
 
 public int getLongitud ()  {  //Método de la clase
 return entradaTeclado.length();
 } //Cierre del método getLongitud
 
 } //Cierre de la clase
 
 Clase ListaCantantesFamosos
 
 //Ejemplo de uso ArrayList aprenderaprogramar.com
 import java.util.ArrayList; //Los import deben ir siempre al principio antes de declarar la clase
 //Esta clase representa una lista de nombres manejada con la clase ArrayList de Java
 public class ListaCantantesFamosos {
 private String nombreDeLaLista; //Establecemos un atributo nombre de la lista
 private ArrayList<String> listadenombres; //Declaramos un ArrayList que contiene objetos String
 
 public ListaCantantesFamosos() {    //Constructor: crea una lista de nombres vacía
 nombreDeLaLista = "Cantantes Famosos";
 listadenombres = new ArrayList<String>(); //Creamos el objeto de tipo ArrayList
 addNombre("Cantante famoso 1");
 addNombre("Cantante famoso 2");
 addNombre("Cantante famoso 3");
 } //Cierre del constructor
 
 public void addNombre (String valor_nombre) {
 listadenombres.add (valor_nombre);
 } //Cierre del método
 
 public String getNombre (int posicion) { //Método
 if (posicion >= 0 && posicion < listadenombres.size() ) {
 return listadenombres.get(posicion); }
 else { return "No existe nombre para la posición solicitada";}
 } //Cierre del método
 
 public int getTamaño () { return listadenombres.size(); } //Cierre del método
 
 public void removeNombre (int posicion) {  //Método
 if (posicion >= 0 && posicion < listadenombres.size() ) {
 listadenombres.remove(posicion); }
 else { } //else vacío. No existe nombre para la posición solicitada, no se ejecuta ninguna instrucción
 } //Cierre del método removeNombre
 
 public void listaNombres () {  //Método
 int i = 0;
 System.out.println ("Los cantantes famosos son: ");
 for (String nombre:listadenombres) {System.out.println ((i+1)+".- " +getNombre(i));i++;};
 } //
 } //Cierre de la clase
- 
				Hola LuisM
 
 [Repito] Por favor, si creas temas en el foro, ponle un título adecuado siguiendo las indicaciones que se dan en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0
 
 Es conveniente que trates no solo de que el código sea correcto, sino que esté bien presentado, espaciado, indentado, etc. Para ello en los editores suele haber una opción de formateado. Por ejemplo en BlueJ en el menú Edit la opción AutoLayout. No obstante, por ejemplo dejar espacio entre dos métodos es algo que debes hacer manualmente tú y que mejora la presentación.
 
 Usas un índice con un for extendido en for (String nombre:listadenombres) {System.out.println (( i+1 )+".- " +getNombre( i ));i++;};
 
 Te aconsejo leer esto: https://www.aprenderaprogramar.com/foros/index.php?topic=3210.msg14220#msg14220
 
 En la clase con el main tienes esto:
 
 public class Test {
 public ListaCantantesFamosos cantantes;
 public EntradaDeTeclado entrada;
 
 Realmente esta declaración de atributos sobra en la clase Test. La clase Test aquí no tiene sentido que la declares con estos atributos public. Es más, si eliminas esas líneas el programa se ejecuta igualmente y con el mismo resultado. Debes evitar dejar partes de código inservible en tus programas.
 
 De resto el código me ha parecido bien. Una cosa que me ha gustado es tu diseño de la clase con el main, es simple, compacto y efectivo
 
 Saludos