[RESOCLVIDO]Problema com exceção de vetor

5 respostas
R

Boa noite, pessoal.
Estou com um problema com uma exceção do tipo "ArrayIndexOutOfBoundsException" por causa de um vetor. Estou tentando passá-lo como argumento de um método, mas está dando erro e não sei resolver o problema. Será que alguém pode dar uma olhada no código abaixo e me dizer o que está errado?
O código completo é bem maior mas para simplificar a vida de vocês eu resumi ele no problema de fato. O método "vconc" devolve a maior sequência de uns em um vetor de tamanho 6, por exemplo:
Se o método receber o vetor {1,0,1,1,1,0} ele retornará 3, pois 3 é a maior sequência de uns.

import javax.swing.JOptionPane;
public class Main {

      public static int vconc(int[] flag) {// Função onde ocorre o problema.
            int up, consc, comp, acum;
            consc = 0;
            comp = 0;
            acum = 0;
            for (int col = 0; col < 6; col++) {
                  while (flag[col] == 1) {// O erro está neste laço, mas não consegui encotrar.
                        acum++;
                        col++;
                  }
                  if (acum > comp) {
                        consc = acum;
                        comp = acum;
                        acum = 0;
                  } else {
                        consc = comp;
                        acum = 0;
                  }
            }
            return consc;
      }

      public static void main(String[] args) {
            try {
                  int[] flag = new int[6];
                  int comp = 0;
                  for (int i = 0; i < 6; i++) {// Necessário para setar o valor 1 em todas as posições do vetor.
                        flag[i] = 1;
                  }

// Aqui eu apaguei parte do código desnecessário de ser mostrado.

                  comp = vconc(flag);// Se eu não chamar esta função o programa roda sem problema.

// Aqui eu apaguei parte do código desnecessário de ser mostrado.

            } catch (ArrayIndexOutOfBoundsException ex) {
                  JOptionPane.showMessageDialog(null, "Erro com vetor.", "Erro", JOptionPane.ERROR_MESSAGE);
            }
      }
}

Obrigado.

5 Respostas

rodrigues_sis

robgeek,

for (int col = 0; col < 6; col++) {
while (flag[col] == 1) {
acum++;
col++; //Remova essa linha
}

a instrução for ja adiciona o contador col, por isso não é necessario a linha 04!

rmendes08

Eu diria mais, em Java, todo vetor possui um atributo length que indica justamente o tamanho do vetor, use ele para limitar o laço ao invés de um número mágico:

for (int col = 0; col < flag.length; col++) {  
   while (flag[col] == 1) {  
     acum++;
     col++;
   } 
}
rmendes08

Outra coisa, quando postar utilize as tags [code] e idente o seu código para o pessoal ler melhor. Em algumas empresas, código sem identação seria motivo para demissão :twisted:

R
rmendes08:
Outra coisa, quando postar utilize as tags [code] e idente o seu código para o pessoal ler melhor. Em algumas empresas, código sem identação seria motivo para demissão :twisted:

Obrigado pela ajuda, cara.
Resolvi o problema, e quanto ao código, sinseramente não sei o que eu fiz de errado pois se você reparar eu coloquei as tags de "code" e mesmo assim não funcionou. Acho que foi porque eu editei o post umas duas vezes para melhorar o código que eu ia mostrar para vocês. Ele etava também identado, e na hora de postar aconteceu isso.

Mais uma vez obrigado pela resposta.

ViniGodoy
robgeek:
rmendes08:
Outra coisa, quando postar utilize as tags [code] e idente o seu código para o pessoal ler melhor. Em algumas empresas, código sem identação seria motivo para demissão :twisted:

Obrigado pela ajuda, cara.
Resolvi o problema, e quanto ao código, sinseramente não sei o que eu fiz de errado pois se você reparar eu coloquei as tags de "code" e mesmo assim não funcionou. Acho que foi porque eu editei o post umas duas vezes para melhorar o código que eu ia mostrar para vocês. Ele etava também identado, e na hora de postar aconteceu isso.

Mais uma vez obrigado pela resposta.

Foi porque você deixou a opção "Desabilitar formatação BB nesta mensagem" marcada.
As tags code são formatações BB, deixe essa opção desmarcada.

Criado 20 de dezembro de 2012
Ultima resposta 21 de dez. de 2012
Respostas 5
Participantes 4