Ajuda para Arrays

3 respostas
R

Bom dia pessoal sou novo aqui
gostaria de uma ajuda para o meu seguinte programa

public static boolean  verificaRegra(ArrayList ArrayGLC, String variavel,String regra){
        public static boolean  verificaRegra(ArrayList ArrayGLC, String variavel,String regra){
        for(int linha = 3;linha<=ArrayGLC.size();linha++){
        String chegou = (String) ArrayGLC.get(linha);
        String[] recebe = chegou.split("//s//>//s");
        String[] separa = recebe[0].split(" ");
        String x = separa[0];
        String y = separa[1];
        
         if(separa.length==2){           
            if(x.equals(variavel)&& y.equals(separa[1])){
                return true;
            }
       }
       
       String w = separa[2];
       if(x.equals(variavel)&& (y.equals(separa[1])||w.equals(separa[2]))){
                return true;
            }
        
        }
        return false;
    }

O erro apresentado é o seguinte:
java.lang.indexoutofboundsexcepetion
mais precisamente na linha "String chegou = (String) ArrayGLC.get(linha);"

No método main:

ArrayList<String> ArrayGLC = new ArrayList<String>(); 
Array.GLC.add("palavra");
verificaRegra(ArrayGLC, variavel, regra); //os outros dois argumentos estam ok

Antecipadamente Agradecido

3 Respostas

Ruttmann

Simples erro de conceito.

O método size retorna o número de elementos da sua coleção. Se tiverem 4 elementos, retorna 4.

O método get busca um objeto na coleção pelo índice. Índice de coleção começa por zero, ou seja, o índice máximo em uma coleção de 4 elementos é 3(0,1,2,3 -> 4 elementos).

Coloca linha-1 no seu get. Acredito que esse é o seu caso, ele tenta pegar 3º elemento da coleção, que é o índice 2.

Testa e diz se funciona. :wink:

asousaj

Rafudo50, seja bem vindo.

Sempre coloque seu código entre as tags CODE. Conforme a linha abaixo, porém sem o espaço antes do ], coloquei espaço apenas para a tag aparecer aqui.

[code ]String x;[/code ]

Olha seu código usando as tags, veja como facilita a leitura.

public static boolean  verificaRegra(ArrayList ArrayGLC, String variavel,String regra){
        public static boolean  verificaRegra(ArrayList ArrayGLC, String variavel,String regra){
        for(int linha = 3;linha<=ArrayGLC.size();linha++){
        String chegou = (String) ArrayGLC.get(linha);
        String[] recebe = chegou.split("//s//>//s");
        String[] separa = recebe[0].split(" ");
        String x = separa[0];
        String y = separa[1];
        
         if(separa.length==2){           
            if(x.equals(variavel)&& y.equals(separa[1])){
                return true;
            }
       }
       
       String w = separa[2];
       if(x.equals(variavel)&& (y.equals(separa[1])||w.equals(separa[2]))){
                return true;
            }
        
        }
        return false;
    }
R

Obrigado Ruttmann
isso realmente arrumou o problema

Criado 19 de dezembro de 2013
Ultima resposta 19 de dez. de 2013
Respostas 3
Participantes 3