0 votos
por (20 puntos) en Java

El siguiente método recorre 2 listas de excel, y celda por celda compara 2 strings para así encontrar la afinidad entre estos. 

//creamos un metodo que nos compare 2 listas

   public static List comparar(List l1, List l2) {

        //Creamos una lista llamada comp en donde almacenaremos los datos

        List comp = new ArrayList();

        //Creamos un ciclo que recorra toda la primera lista

        for(int i=8; i<l1.size();i++) {

            //creamos una sublista en donde se van almacenando los valores de l1 en la posición i

            List sub = (List) l1.get(i);

            //almacenamos los datos de cada celda en hssfCell

            XSSFCell hssfCell = (XSSFCell) sub.get(2);

            //los datos almacenados en hssfCell los convertimos en String

            String s = hssfCell.toString();

            

            //creamos un ciclo que nos recorra la segunda lista

            for(int j = 1; j<l2.size(); j++) {

                //creamos una sublista en donde se van almacenando los valores de l2 en la posición j

                List sub2 = (List) l2.get(j);

                //almacenamos los datos de cada celda en hssfCELL2

                XSSFCell hssfCell2 = (XSSFCell) sub2.get(3);

                //convertimos a string los datos almacenados en hssfCell2

                String s2 = hssfCell2.toString();

                //implementamos el método de setwords para calcular 

                ld.setWords(s,s2);

                

                float afinidad=ld.getAfinidad();

                

                if(afinidad*100>65) {

                    String[] dup = {s, s2};

                    comp.add(dup);

                    System.out.println("Marca solicitada: " + s);

                    System.out.println("Marca Contactenos: " + s2);

                    System.out.println("\nDistancia de Levenshtein:\n" + ld.getDistancia());

                    System.out.println("Afinidad:\n" + ld.getAfinidad() * 100 + " %"); 

                }

            }               

        }

        return comp;

    }

Al ejecutar todo el programa saca este error:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 2, Size: 1

at java.util.ArrayList.rangeCheck(ArrayList.java:653)

at java.util.ArrayList.get(ArrayList.java:429)

at levenshtein1.Levenshtein1.comparar(Levenshtein1.java:34)

at levenshtein1.Levenshtein1.main(Levenshtein1.java:73)

C:\Users\Usuario\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1

BUILD FAILED (total time: 1 second)

Por favor, accede o regístrate para responder a esta pregunta.

Preguntas relacionadas

0 votos
8 respuestas
preguntado por sakura (160 puntos) Ene 28, 2016 en Java
0 votos
1 respuesta
0 votos
0 respuestas
Bienvenido a Dudas de Programación, donde puedes hacer preguntas y recibir respuestas sobre los problemas más frecuentes de los lenguajes de programación, frameworks de desarrollo y bases de datos que utilices. Foro de Línea de Código

Categorías

...