Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: rubens23 en 02 de Junio 2015, 09:34
-
Clase ArrayList del api Java. Métodos add, size, etc. Concepto de clase genérica o parametrizada.
Clase ListaCantantesFamosos
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
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));
}
}
}
-
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 (https://www.aprenderaprogramar.com/foros/index.php?topic=2514.0)
-
Ya está corregido.
Clase ListaCantantesFamosos
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
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));
}
}
}
-
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
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
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
-
Para darte una idea de tu código que modifique
clase para generar teclado
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
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
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