Autor Tema: Solucion Ejercicio CU00666B del curso java - For extendido o for each  (Leído 4602 veces)

jotase1507

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 38
    • Ver Perfil
Bueno, dejo mi codigo, espero haberlo hecho bien  :)

Código: [Seleccionar]
//Ejercicio Nro. 66
    public static void main (String [] args) {
        System.out.println("Inicia el programa.");
        System.out.println("A continuacion se le pedira ingresar nombres de artistas.");
               
        listaCantatesFamosos lista = new listaCantatesFamosos("Primera Lista");
       
        int i = 1;
       
        while (i > lista.listaCantatesFamosos.size())
        {
            System.out.println("Ingrese el nombre numero "+i+":");
            EntradaDeTeclado entrada1 = new EntradaDeTeclado();
            String datos = entrada1.getEntrada();
            lista.addNombre(i+".- "+datos);
            System.out.println("Desea ingresar otro nombre, debe ingresar si o no");
            EntradaDeTeclado entrada2 = new EntradaDeTeclado();
            String yesorno = entrada2.getEntrada();
            if (yesorno.equalsIgnoreCase("si")) {
                i++;
            } else if (yesorno.equalsIgnoreCase("no")){
                System.out.println("Gracias, eso es todo.");
                break;
            }
           
        }
       
        System.out.println("La lista ingresada fue la siguiente:");
        for (String nombre: lista.listaCantatesFamosos) {
                System.out.println(nombre);
        }
    }
« Última modificación: 30 de Enero 2015, 09:12 por Alex Rodríguez »

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:Solucion Ejercicio CU00666B - For extendido o for each
« Respuesta #1 en: 29 de Enero 2015, 14:32 »
Hola jotase1507

Has enviado un método, el método main que necesita estar dentro de una clase

Tampoco has enviado la clase ListaCantantesFamosos.

Veo que has escrito pocos mensajes en el foro.
Si has hecho los ejercicios anteriores a este, deberías presentarlos para ver como avanzan tus conocimientos en Java.
Así podremos ayudarte cuando un ejercicio se te ponga cuesta arriba.

A este ejercicio como te digo le faltan muchas cosas.

Si quieres hacer alguna pregunta, no lo dudes.

Saludos

jotase1507

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 38
    • Ver Perfil
Re:Solucion Ejercicio CU00666B - For extendido o for each
« Respuesta #2 en: 29 de Enero 2015, 16:00 »
Entiendo el punto de vista, no he estado respondiendo con los ejercicios anteriores pues buscaba las respuestas, las comparaba y al ver que estaba muy parecidos, no los incluida, pido las disculpas del caso. Enviare mi código incluyendo las clases que use...

Clase listaCantantesFamosos
Código: [Seleccionar]
import java.util.ArrayList;

public class listaCantatesFamosos {
    String nombreLista;
    ArrayList <String> listaCantatesFamosos;
   
    public listaCantatesFamosos (String nombre) {
        nombreLista = nombre;
        listaCantatesFamosos = new ArrayList<String>();
    }
   
    public void addNombre (String valorNombre) {
        listaCantatesFamosos.add(valorNombre);
    }
   
    public String getNombre (int posicion) {
        if (posicion >= 0 && posicion < listaCantatesFamosos.size()) {
            return listaCantatesFamosos.get(posicion);
        } else {
            return "No existe la posicion";
        }
    }
   
    public void removeNombre (int posicion) {
        if (posicion >= 0 && posicion < listaCantatesFamosos.size()) {
            listaCantatesFamosos.remove(posicion);
        } else {
            System.out.println ("No existe la posicion");
        }
    }
   
    public void setNombre (int posicion, String valorNombre) {
        listaCantatesFamosos.set(posicion, valorNombre);
    }
   
    public int getTamaño() {
        return listaCantatesFamosos.size();
    }
}

Clase EntradaDeTeclado
Código: [Seleccionar]
import java.util.Scanner;

public class EntradaDeTeclado {
    private String entradaTeclado;
 
    public EntradaDeTeclado ()  {
        entradaTeclado="";
        pedirEntrada();
    }
 
    public void pedirEntrada ()  {   
        Scanner entradaEscaner = new Scanner (System.in);
        entradaTeclado = entradaEscaner.nextLine ();     
    }
 
    public String getEntrada () {
        return entradaTeclado;
    }
   
    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);         
            }
        }
        return entradaTeclado; 
    }
 
    public int getLongitud ()  { 
        return entradaTeclado.length();
    }
}

Y al final mi Clase Test
Código: [Seleccionar]
import java.util.*;

public class Test {   
    //Ejercicio Nro. 66
    public static void main (String [] args) {
        System.out.println("Inicia el programa.");
        System.out.println("A continuacion se le pedira ingresar nombres de artistas.");
               
        listaCantatesFamosos lista = new listaCantatesFamosos("Primera Lista");
       
        int i = 1;
       
        while (i > lista.listaCantatesFamosos.size())
        {
            System.out.println("Ingrese el nombre numero "+i+":");
            EntradaDeTeclado entrada1 = new EntradaDeTeclado();
            String datos = entrada1.getEntrada();
            lista.addNombre(i+".- "+datos);
            System.out.println("Desea ingresar otro nombre (debe ingresar \"si\" o \"no\")");
            EntradaDeTeclado entrada2 = new EntradaDeTeclado();
            String yesorno = entrada2.getEntrada();
            if (yesorno.equalsIgnoreCase("no")){
                System.out.println("Gracias, eso es todo.");
                break;
            } else {
                i++;
            }           
        }
        System.out.println("");
        System.out.println("La lista ingresada fue la siguiente:");
        for (String nombre: lista.listaCantatesFamosos) {
                System.out.println(nombre);
        }
    }
}

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:Solucion Ejercicio CU00666B del curso java - For extendido o for each
« Respuesta #3 en: 30 de Enero 2015, 20:04 »
Hola jotase1507

Tu ejercicio es funcional y presenta al final los elementos del ArrayList. Bien.

Pero si repasas el enunciado verás que se pedían más cosas.


Citar
Crea una clase denominada ListaCantantesFamosos que al ser inicializada contenga un ArrayList con tres Strings que sean el nombre de cantantes famosos
Forma parte del ejercicio que el ArrayList contenga ya al principio tres elementos, y que se muestren usando un for extentido. Se que eso no puede representar singún problema.


Está bien que tu programa consulte si se van a introducir nuevos cantantes y proceda en consecuencia. Es lo que se pedía.
Pero, también se pide: Que cada vez que introduzcamos un nuevo cantante mostremos la lista actualizada.



Tu ejercicio tiene como resultado final un ArrayList con cantantes famosos. Ese es el cometido final, y está bien.

Pero, nosotros estamos aprendiendo. Y deberíamos probar todos los ejercicios que nos proponen, (están pensados para ganar experiencia en nuestra codificación.)



A parte quiero comentarte unos detalles que mejoraran tu código:

A) La variable yesorno, es válida y operativa. Pero deberías acostumbrarte a usar la convención (que ya has usado en esta clase) de poner los nombres de las palabras en mayúscula excepto la primera palabra.
Para esta variable la convención nos aconseja bautizarla:
yesOrNo.

B) En el bucle while sales con un break. Es válido y funciona. Pero no es elegante.
Es como si sales de una habitación rompiendo la pared en lugar se salir por la puerta.
Para salir así no hacía falta poner el condicional del while.
Podías cambiarlo por algo así:
while (true) y salir con el break en cualquier momento.

Además comprueba que si eliminas el break, tu programa funcionan exactamente igual.
¿Por qué será?

El break lo usaríamos cuando una condición que no controla el while cambie a un valor que (por decisión própia) nos aconseja salir por piernas del bucle.

C) Para crear líneas en blanco en la consola, puedes hacer lo que tú has hecho:
System.out.println("");
Y también funciona:
System.out.println();
O usar el carácter de control (nueva línea) "\n" que puedes poner en cualquier posición dentro del texto a mostrar.
System.out.println("\nLa lista ingresada fue la siguiente:");

Saludos

jotase1507

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 38
    • Ver Perfil
Re:Solucion Ejercicio CU00666B del curso java - For extendido o for each
« Respuesta #4 en: 06 de Febrero 2015, 18:58 »
Gracias por las anotaciones, acabo de regresar de viaje, por lo que acabo de leer tus anotaciones, buscare que terminar el ejercicio tal cual se propone en el enunciado para lograr el objetivo final, haciendo caso a tus apuntes, gracias nuevamente.

Actualizacion:

Bueno, modifique el codigo del Main solamente por eso solo muestro ese... espero esta vez pueda alcanzar las expectativas esperadas.

Código: [Seleccionar]
import java.util.*;

public class Prueba {
//Ejercicio Nro. 66
    public static void main (String [] args) {
        System.out.println("Inicia el programa.");
               
        listaCantatesFamosos lista = new listaCantatesFamosos("Primera Lista");
        lista.addNombre("1.- Jhon Lenon");
        lista.addNombre("2.- Freddy Mercury");
        lista.addNombre("3.- Kurt Cobain");
        System.out.println("\nLa lista pre-ingresada es la siguiente:\n");
        for (String nombre: lista.listaCantatesFamosos) {
                System.out.println(nombre);
        }
        System.out.println("\nA continuacion se le pedira ingresar nombres de artistas.");
        int i = 4;
       
        while (i > lista.listaCantatesFamosos.size())
        {
            System.out.println("\nIngrese el nombre numero "+i+":");
            EntradaDeTeclado entrada1 = new EntradaDeTeclado();
            String datos = entrada1.getEntrada();
            lista.addNombre(i+".- "+datos);
            System.out.println("\nLa lista ingresada fue la siguiente:");
            for (String nombre: lista.listaCantatesFamosos) {
                System.out.println(nombre);
            }
            System.out.println("\nDesea ingresar otro nombre (debe ingresar \"si\" o \"no\")");
            EntradaDeTeclado entrada2 = new EntradaDeTeclado();
            String yesOrNo = entrada2.getEntrada();
            if (yesOrNo.equalsIgnoreCase("no")){
                System.out.println("\nGracias, eso es todo.");
            } else {
                i++;
            }           
        }
    }
}
« Última modificación: 06 de Febrero 2015, 19:27 por jotase1507 »

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:Solucion Ejercicio CU00666B del curso java - For extendido o for each
« Respuesta #5 en: 06 de Febrero 2015, 22:40 »
Hola jotase

Tu ejercicio está perfecto. Muy bien.

Y además respondiendo a las especificaciones del enunciado

Y precediendo a los eventos con mensajes informativos.

Perfecto.

Saludos

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".