Hola colegas. Estaba practicando sobre los ArrayList. Reutilice código para experimentar, para ver como funcionaban los métodos de la clase ArrayList y para hacer algo mas o menos diferente. Cree una clase donde tengo los métodos y otra donde esta el método main, que son las siguientes:
Clase con métodos.
import java.util.*;
/**
* Write a description of class ListaNombres here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class ListaNombres{
private String nombreDeLaLista;
private ArrayList<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){
if(i >= 0 && i < listaDeNombres.size()){
return listaDeNombres.get(i);
}else{
return "No se encuentra el nombre";
}
}
public int getTamaño(){
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 ArrayList<String> getListaDeNombres(){
return listaDeNombres;
}
}
Metodo main.
import java.util.*;
/**
* 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 listNombres = new ListaNombres("Amigos");
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) + ": ");
String nom = sc.nextLine();
listNombres.addNombre(nom);
}
System.out.println("En estos momentos en tamaño de su lista de nombre es de: " + listNombres.getTamaño());
System.out.print(listNombres.getListaDeNombres());
}
}
En la clase: TestListaNombres. Mi intención era agregar mas cosas, con la intención de utilizar todos los métodos de la otra clase, pero a medida que voy creando lo que hago lo voy probando. Y aquí es donde viene mi duda. Resulta, que en el programa, yo le pregunto al usuario cuantos nombres deseea agregar, haasta ahi todo bien. La cuestion viene despues, que cuando el programa entra en el for, para agregar nombre por nombre sucede algo extraño, que es esto:
Prueba de escritorio.
¿Cuantos nombres desea ingresar?: 3
Ingresas nombre numero 1: Ingresas nombre numero 2: nombre1
Ingresas nombre numero 3: nombre1
En estos momentos en tamaño de su lista de nombre es de: 3
[, nombre1, nombre1]
Cuando el usuario ingresa la cantidad de nombres (en este caso 3), cuando el programa procede a ingresar los nombres a guardar el la lista, no me deja ingresar el nombre numero 1, si no que de una me imprime para ingresar el nombre numero 2. y asi sucesivamente. Hice una prueba para que me mostrata por consola los nombre que tengo en mi lista. y preciso, en la lista, en mi posicion numero 0 (get(0)) aparece el dato como vacio y las otras posiciones si almacena su dato normalmente.
Intente arreglarlo de varias maneras, busque como solucionarlo y me di por vencido. Por eso recurro a ustedes, para ver si puede ayudarme, ya que no quiero quedar con la duda y la incertidumbre del por que ocurre esto.
Espero y me haya sabido explicar y puedan ayudarme. Estaría muy agradecido. De ante mano muchas gracias.