Autor Tema: Java ArrayList del api. Métodos add, size, remove, añadir y quitar CU00665B  (Leído 3921 veces)

rubens23

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 30
    • Ver Perfil
Clase ArrayList del api Java. Métodos add, size, etc. Concepto de clase genérica o parametrizada.

Clase ListaCantantesFamosos
Código: [Seleccionar]
import java.util.*;
public class ListaCantantesFamosos {
    private String nombreDeLaLista;
    private ArrayList<String> listaDeCantantes;
   
    public ListaCantantesFamosos(String cantante){
        nombreDeLaLista = cantante;
        listaDeCantantes = new ArrayList<String>();
    }
    public void addNombre (String valor_nombre){
        listaDeCantantes.add(valor_nombre);
    }
    public String getNombre (int posicion){
        if (posicion >= 0 && posicion < listaDeCantantes.size()){
            return listaDeCantantes.get(posicion);
        }
        else {
        return "No existe nombre para la posicion solicitada";
    }
    }
    public int getTamaño (){
        return listaDeCantantes.size();
    }
     public void removeNombre (int posicion) {  //Método
        if (posicion >= 0 && posicion < listaDeCantantes.size() ) {
            listaDeCantantes.remove(posicion); }
        else { }
    }
}

Clase Test con main
Código: [Seleccionar]
public class TestListaCantantes{
    public static void main ( String [ ] args ){
        System.out.println("Empezamos el programa");
        ListaCantantesFamosos lista1 = new ListaCantantesFamosos("nombres");
        lista1.addNombre("Juan");
        System.out.println("Nombre del primer cantante ya establecido, es " + lista1.getNombre(0)+ ", ¿deseas cambiarlo?" );
        EntradaDeTeclado respuesta = new EntradaDeTeclado();
        if (respuesta.getEntrada().equals("si")){
            lista1.removeNombre(0);
            System.out.println("Introduzca el nuevo nombre");
            EntradaDeTeclado entrada = new EntradaDeTeclado();
            lista1.addNombre(entrada.getEntrada());
            System.out.println("Introduzca el nombre del segundo cantante");
            EntradaDeTeclado entrada1 = new EntradaDeTeclado();
            System.out.println("Introduza el nombre del tercer cantante");
            EntradaDeTeclado entrada2 = new EntradaDeTeclado();
            lista1.addNombre(entrada1.getEntrada());
            lista1.addNombre(entrada2.getEntrada());
            System.out.println("La lista ha quedado formada por " + lista1.getTamaño() + " cantantes ");
            System.out.println("Nombre del primer cantante es " + lista1.getNombre(0));
            System.out.println("Nombre del segundo cantante es " + lista1.getNombre(1));
            System.out.println("Nombre del tercer cantante es " + lista1.getNombre(2));
        }else{
            System.out.println("Introduzca el nombre del segundo cantante");
            EntradaDeTeclado entrada1 = new EntradaDeTeclado();
            System.out.println("Introduza el nombre del tercer cantante");
            EntradaDeTeclado entrada2 = new EntradaDeTeclado();
            lista1.addNombre(entrada1.getEntrada());
            lista1.addNombre(entrada2.getEntrada());
            System.out.println("La lista ha quedado formada por " + lista1.getTamaño() + " cantantes ");
            System.out.println("Nombre del primer cantante es " + lista1.getNombre(0));
            System.out.println("Nombre del segundo cantante es " + lista1.getNombre(1));
            System.out.println("Nombre del tercer cantante es " + lista1.getNombre(2));
        }
    }
}
« Última modificación: 04 de Junio 2015, 23:24 por Alex Rodríguez »

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Parece que tu ejercicios no cumple lo que dice aunque no probé todavía el enunciado dice que la lista ya debe estar cargado con tres nombre de cantante famoso y al final debe cargar dos cantante famoso por teclado y quedaría con 5 nombre de cantante en total y mostrar eso en pantalla para tener una idea mira este ejercicios resuelto.
https://www.aprenderaprogramar.com/foros/index.php?topic=2514.0

rubens23

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 30
    • Ver Perfil
Ya está corregido.

Clase ListaCantantesFamosos

Código: [Seleccionar]

import java.util.*;
public class ListaCantantesFamosos {

private ArrayList<String> listaDeCantantes;
   
    public ListaCantantesFamosos(){
        listaDeCantantes = new ArrayList<String>();
    }
    public void addNombre (String valor_nombre){
        listaDeCantantes.add(valor_nombre);
    }
    public String getNombre (int posicion){
        if (posicion >= 0 && posicion < listaDeCantantes.size()){
            return listaDeCantantes.get(posicion);
        }
        else {
        return "No existe nombre para la posicion solicitada";
    }
    }
    public int getTamaño (){
        return listaDeCantantes.size();
    }
     public void removeNombre (int posicion) {  //Método
        if (posicion >= 0 && posicion < listaDeCantantes.size() ) {
            listaDeCantantes.remove(posicion); }
        else { }
    }
}

Clase TestListaCantante

Código: [Seleccionar]
public class TestListaCantantes{
    public static void main ( String [ ] args ){
        System.out.println("Empezamos el programa");
        ListaCantantesFamosos lista1 = new ListaCantantesFamosos();
        lista1.addNombre("Juan");
        lista1.addNombre("Ramón");
        lista1.addNombre("Pedro");
        System.out.println("Nombre de los cantantes ya introducidos, son " + lista1.getNombre(0)+", "+ lista1.getNombre(1)+", "+lista1.getNombre(2)+ ", ¿desea añadir alguno más?" );
        EntradaDeTeclado respuesta = new EntradaDeTeclado();
        if (respuesta.getEntrada().equals("si")){
            //lista1.removeNombre(0);
            System.out.println("Introduzca dos nuevos nombres");
            EntradaDeTeclado entrada = new EntradaDeTeclado();
            lista1.addNombre(entrada.getEntrada());
            EntradaDeTeclado entrada1= new EntradaDeTeclado();
            lista1.addNombre(entrada1.getEntrada());
            System.out.println("La lista ha quedado formada por " + lista1.getTamaño() + " cantantes ");
            System.out.println("Nombre del primer cantante es " + lista1.getNombre(0));
            System.out.println("Nombre del segundo cantante es " + lista1.getNombre(1));
            System.out.println("Nombre del tercer cantante es " + lista1.getNombre(2));
            System.out.println("Nombre del cuarto cantante es " + lista1.getNombre(3));
            System.out.println("Nombre del quinto cantante es " +lista1.getNombre(4));
        }else{
            System.out.println("La lista ha quedado formada por " + lista1.getTamaño() + " cantantes ");
            System.out.println("Nombre del primer cantante es " + lista1.getNombre(0));
            System.out.println("Nombre del segundo cantante es " + lista1.getNombre(1));
            System.out.println("Nombre del tercer cantante es " + lista1.getNombre(2));
        }
    }
}

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Falta corregir mas para que funcione y cumpla lo que dice el ejercicios
tenes que crear un constructor y iniciarla y que contenga tres nombre de cantante 
Código: [Seleccionar]
public String getNombre (int posicion){
        if (posicion >= 0 && posicion < listaDeCantantes.size()){
            return listaDeCantantes.get(posicion);
        }
        else {
        return "No existe nombre para la posicion solicitada";
    }
    }
    public int getTamaño (){
        return listaDeCantantes.size();
    }
     public void removeNombre (int posicion) {  //Método
        if (posicion >= 0 && posicion < listaDeCantantes.size() ) {
            listaDeCantantes.remove(posicion); }
        else { }
    }
este codigo de la posicion ya no es necesario si lo que te pide es cargar dos cantante mas y listarla y mostrar por pantalla

Otra cosa no es mas necesario pedir si quiere cargar nuevo nombre o no al usuario. Directo tiene que pedir que cargue dos nombre y luego de cargar los dos listarta
Una condicion ya no es necesario en el main
Código: [Seleccionar]
if (respuesta.getEntrada().equals("si")){
            //lista1.removeNombre(0);
            System.out.println("Introduzca dos nuevos nombres");
            EntradaDeTeclado entrada = new EntradaDeTeclado();
            lista1.addNombre(entrada.getEntrada());
            EntradaDeTeclado entrada1= new EntradaDeTeclado();
            lista1.addNombre(entrada1.getEntrada());
            System.out.println("La lista ha quedado formada por " + lista1.getTamaño() + " cantantes ");
            System.out.println("Nombre del primer cantante es " + lista1.getNombre(0));
            System.out.println("Nombre del segundo cantante es " + lista1.getNombre(1));
            System.out.println("Nombre del tercer cantante es " + lista1.getNombre(2));
            System.out.println("Nombre del cuarto cantante es " + lista1.getNombre(3));
            System.out.println("Nombre del quinto cantante es " +lista1.getNombre(4));
        }else{
            System.out.println("La lista ha quedado formada por " + lista1.getTamaño() + " cantantes ");
            System.out.println("Nombre del primer cantante es " + lista1.getNombre(0));
            System.out.println("Nombre del segundo cantante es " + lista1.getNombre(1));
            System.out.println("Nombre del tercer cantante es " + lista1.getNombre(2));
        }
    }
Tenes que sacarlo y hacer un metodo para listar

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Para darte una idea de tu código que modifique
clase para generar teclado
Código: [Seleccionar]
import java.util.Scanner;

public class EntradaDeTeclado {

    private String entradaTeclado;
    Scanner sc = new Scanner(System.in);

    public EntradaDeTeclado() {
        entradaTeclado = "";
    }

    public String AgregarCantante() {
        entradaTeclado = sc.nextLine();
        return entradaTeclado;
    }

    public String getEntrada() {
        return entradaTeclado;
    }

}
aunque podia llamarlo GenerarTeclado
Clase para listar y crear listado de cantante
Código: [Seleccionar]
import java.util.ArrayList;

public class ListaCantantesFamosos {

    private ArrayList<String> listaDeCantantes;

    public ListaCantantesFamosos() {
        this.listaDeCantantes = new ArrayList<String>();
        listaDeCantantes.add("Juan");
        listaDeCantantes.add("Ramón");
        listaDeCantantes.add("Pedro");
    }

    public void addNombre(String valor_nombre) {
        listaDeCantantes.add(valor_nombre);
    }

    public void listarCantantesFamosos() {
        for (int i = 0; i < listaDeCantantes.size(); i++) {
            System.out.println("Cantante Famoso " + (i + 1) + " : " + listaDeCantantes.get(i));
        }
    }
}
clase principal main
Código: [Seleccionar]
public class TestListaCantantes {

    public static void main(String[] args) {
        System.out.println("Empezamos el programa");
        ListaCantantesFamosos lista1 = new ListaCantantesFamosos();
        EntradaDeTeclado entrada = new EntradaDeTeclado();

        System.out.println("Introduzca nuevos nombres de cantante");
        entrada.AgregarCantante();
        lista1.addNombre(entrada.getEntrada());

        System.out.println("Introduzca nuevos nombres de cantante");
        entrada.AgregarCantante();
        lista1.addNombre(entrada.getEntrada());

        lista1.listarCantantesFamosos();

    }

}
Si pode mejorarla este código que te pase sera genial

 

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".