81
Aprender a programar desde cero / Re: Entrega CU00665B. Inconveniente al agregar un objeto a un ArrayList java.
« en: 02 de Noviembre 2014, 04:25 »
Hola Cabanota!
Antes de comentar tu código, primero te aclaro dos puntos a tomar en cuenta en tus próximas publicaciones en los foros de aprenderaprogramar.com
1ro: Evita usar nombres de temas como: AYUDA!! o Error!! ext.. En su lugar, usa un nombre de tema descriptivo al problema con el cual necesitas ayuda, o descriptivo al error que estés presentando. En este caso debido a que necesitas ayuda con un ArrayList que no esta guardando los objetos como ha de esperarse, un tema descriptivo del problema podría ser: "Entrega CU00665B. Inconveniente al agregar un objeto a un ArrayList java." ext..
2do: Veo que has creado un nuevo tema https://www.aprenderaprogramar.com/foros/index.php?topic=1549.0 que mas bien podría ser una continuación en este mismo hilo (tema) Cuando actualices, mejores o corrijas un código que ya ayas publicado y que quieras publicar dicha actualización, mejora o corrección, es recomendable que lo hagas en un mismo hilo, con su comentario correspondiente, esto nos permite a todos los que leamos, una mejor asimilación del tema.
En cuanto al inconveniente que estas presentando, el problema (por una razón que aun no entiendo) en este caso lo esta generando el método nextLine(); de la clase Scanner, para "corregir" esto, sustituimos el método nextLine(); por el metodo next();
También te recomiendo cuidar tu ortografía para evitar cosas como escribir "en" donde deberias escribir "el". El truco esta en leer y releer tu código en busca de estos "errores" en los cuales el compilador java no nos brinda apoyo![Sonreir ;D](https://aprenderaprogramar.com/foros/Smileys/default/grin.gif)
Otras sugerencias y comentarios los encontraras a modo de comentario en el siguiente código que he editado ligeramente a partir de tu código.
Clase TestListaNombres
clase ListaNombres
Saludos!
Antes de comentar tu código, primero te aclaro dos puntos a tomar en cuenta en tus próximas publicaciones en los foros de aprenderaprogramar.com
1ro: Evita usar nombres de temas como: AYUDA!! o Error!! ext.. En su lugar, usa un nombre de tema descriptivo al problema con el cual necesitas ayuda, o descriptivo al error que estés presentando. En este caso debido a que necesitas ayuda con un ArrayList que no esta guardando los objetos como ha de esperarse, un tema descriptivo del problema podría ser: "Entrega CU00665B. Inconveniente al agregar un objeto a un ArrayList java." ext..
2do: Veo que has creado un nuevo tema https://www.aprenderaprogramar.com/foros/index.php?topic=1549.0 que mas bien podría ser una continuación en este mismo hilo (tema) Cuando actualices, mejores o corrijas un código que ya ayas publicado y que quieras publicar dicha actualización, mejora o corrección, es recomendable que lo hagas en un mismo hilo, con su comentario correspondiente, esto nos permite a todos los que leamos, una mejor asimilación del tema.
En cuanto al inconveniente que estas presentando, el problema (por una razón que aun no entiendo) en este caso lo esta generando el método nextLine(); de la clase Scanner, para "corregir" esto, sustituimos el método nextLine(); por el metodo next();
También te recomiendo cuidar tu ortografía para evitar cosas como escribir "en" donde deberias escribir "el". El truco esta en leer y releer tu código en busca de estos "errores" en los cuales el compilador java no nos brinda apoyo
![Sonreir ;D](https://aprenderaprogramar.com/foros/Smileys/default/grin.gif)
Otras sugerencias y comentarios los encontraras a modo de comentario en el siguiente código que he editado ligeramente a partir de tu código.
Clase TestListaNombres
Código: [Seleccionar]
import java.util.Scanner;
/**
* Write a description of class TestListaNombres here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class TestListaNombres{
public TestListaNombres(){
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
ListaNombres listDeAmigos = new ListaNombres("Amigos");//Cambiamos el nombre de la variable "listDeNombres" por "listDeAmigos"
System.out.print("¿Cuantos nombres desea ingresar?: ");
int numIngresos = sc.nextInt();
for(int i = 0; i < numIngresos; i++){
System.out.print("Ingresas nombre numero " + (i+1) + ": ");
listDeAmigos.addNombre(sc.next());/*Eliminamos la variable String "nom" y sustituimos el metodo nextLine(); por el metodo next(); el cual pasamos como
parámetro en sustitución de la variable "nom"*/
}
System.out.println("\nEn estos momentos el tamaño de su lista de amigos es de: " + listDeAmigos.getTamaño());
System.out.print(listDeAmigos.getListaDeNombres());
}
}
clase ListaNombres
Código: [Seleccionar]
import java.util.Scanner;
import java.util.List;
import java.util.ArrayList;
/*En caso de no usar muchas clases de un pakage, es recomendable especificar la/s clase/s a usar y evitar una sintaxis como: import java.util.*; ya que con esta sintaxis
cargamos todas las clases del pakage y con esto desperdiciamos recursos como memoria y tiempo de respuesta en nuestros programas.*/
/**
* Write a description of class ListaNombres here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class ListaNombres{
private String nombreDeLaLista;/*Con esta variable intentas darle un nombre a la lista, pero en realidad no haces uso de esta variable y tampoco es la forma
correcta de hacer lo que pretendes, el nombre que le has asignado a esta colección es: "listaDeNombres" y en su lugar podrías asignarle como nombre "amigos"
o "listaDeAmigos" ext.. pero no tratar de vincular una variable como nombre de la lista o coleccion. (te recomiendo eliminar esta variable)*/
private List<String> listaDeNombres;
public ListaNombres(String nombreDeLaLista){
this.nombreDeLaLista = nombreDeLaLista;
listaDeNombres = new ArrayList<String>();
}
public void addNombre(String nombre){
listaDeNombres.add(nombre);
}
public String getNombreABuscar(int i){/*El nombre de este método no es adecuado, un método get o set debe de estar relacionado a una variable de la clase para
reasignar un valor (en caso de set) o devolver un valor (en caso de get) de x variable. Un nombre adecuado podria ser: buscarNombre(int i); ext..*/
if(i >= 0 && i < listaDeNombres.size()){
return listaDeNombres.get(i);
}else{
return "No se encuentra el nombre";
}
}
public int getTamaño(){//Un nombre mas adecuado podría ser: obtenerTamaño(); tamañoListaDeNombres(); ext..
return listaDeNombres.size();
}
public void removerNombre(int i){
if(i >= 0 && i < listaDeNombres.size()){
listaDeNombres.remove(i);
}else{
System.out.println("Este nombre no existe.");
}
}
public List<String> getListaDeNombres(){
return listaDeNombres;
}
}
Saludos!