es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Excepción básica de IndexOutOfBoundsException para principiantes.

Tengo una clase Engineer. Y estoy creando un arraylist vacío de tipo Engineer.

Estoy creando un método para comprobar el arraylist, si el arraylist no es nulo tiene que darme el índice 0. Pero si el arraylist es nulo, mi método tiene que crear un nuevo objeto Engineer y añadirlo al arraylist vacío. Después de agregarlo, espero que mi método me dé el índice 0. Pero arroja IndexOutOfBoundsException. Sé que se me pasaron algunas cosas simples, pero no pude averiguar cómo solucionarlo.

“`ArrayList newEmptyEngineerList = new ArrayList<> ();
findLastEngineer(newEmptyEngineerList);

public static void findLastEngineer(ArrayList aa) {

<pre><code>if (aa.get(0)! = null) {
System.out.println(aa.get(0));
}
más {
Engineer eng = new Engineer ();
aa.add (0, eng);
System.out.println(aa.get(0));
}
</code></pre>

}“`

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Hay algunas cosas que necesitan ser corregidas en el código:

    1. El parámetro del método findLastEngineer debería tener un tipo genérico ArrayList<engineer> en lugar de solo ArrayList.
    2. En la condición if, en lugar de verificar si aa.get(0) es nulo, se debe verificar si el tamaño del arraylist es mayor o igual a 1. Por lo tanto, la condición debería ser if (aa.size() >= 1).

    3. En el bloque else, el objeto Engineer debería agregarse al final del arraylist en lugar del índice 0. Por lo tanto, la línea debe ser aa.add(eng).

    Aquí está el código corregido:

    ArrayList<engineer> newEmptyEngineerList = new ArrayList<>();
    findLastEngineer(newEmptyEngineerList);
    
    public static void findLastEngineer(ArrayList<engineer> aa){
    
        if (aa.size() >= 1){
            System.out.println(aa.get(0));
        }
        else {
            Engineer eng = new Engineer();           
            aa.add(eng);
            System.out.println(aa.get(0));
        }
    }
    

    Con estos cambios, el código debería funcionar como se espera.

Comments are closed.