Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: ronal.d87 en 19 de Junio 2015, 07:58

Título: Java ejemplo pedir texto por consola ejercicio resuelto ArrayList CU00665B
Publicado por: ronal.d87 en 19 de Junio 2015, 07:58
HOLA, aqui el desarrollo del ejercicio

clase ListaCantantesFamosos
Código: [Seleccionar]
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

Código: [Seleccionar]
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();
    }
   
}

Título: Re:EJERCICIO CU00665B REALIZADO
Publicado por: Alex Rodríguez en 22 de Junio 2015, 22:43
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:

Código: [Seleccionar]
    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.

Código: [Seleccionar]
    public ListaCantantesFamosos (){//Metodo constructor
        nombreCantantes = new ArrayList<>();       
        nombreCantantes.add("Mark");
        nombreCantantes.add("Shakira");
        nombreCantantes.add("Chayane");
    }

El caso de solicitud lo resolveríamos así:

Código: [Seleccionar]
    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