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