Java.lang.ArrayIndexOutOfBoundsException: 4

2 respostas
M

peço a ajuda de vcs para encontrar o erro nesse codigo
a idéia é fazer a operação de união entre conjuntos

int conjunto[];
    int numElem;
    
    ConjuntoInteiro (int []elem)     {
        numElem = elem.length;
        conjunto = new int [numElem];
        for (int i=0; i<numElem; i++)   {
            conjunto[i] = elem[i];
        }
    }
    
    ConjuntoInteiro ()  {
        numElem = 0;
        conjunto = null;
    }


        public ConjuntoInteiro uniao (ConjuntoInteiro a)    {
        int repete=0;
        for (int i=0; i<this.numElem; i++)   {
            for (int j=0; j<a.numElem; j++)    {
                if (a.conjunto[j] == this.conjunto[i])    {
                    repete++;
                }
            }
        }
        ConjuntoInteiro c;
        c = new ConjuntoInteiro();
        c.numElem = (a.numElem + this.numElem) - repete;
        c.conjunto = new int [c.numElem];
        int k = 0;
        for (int i=0; i<a.numElem; i++) {
            for (int j=0; j<this.numElem; j++)   {
                if (a.conjunto[i] == this.conjunto[j])  {
                    c.conjunto[k] = a.conjunto[i];
                    k++;
                }
                else    {
                    c.conjunto[k] = a.conjunto[i];
                    k++;
                    c.conjunto[k] = this.conjunto[j];
                    k++;
                }
            }           
        }
        
        
        return c;
    }

2 Respostas

thiago.correa

É bem provável que seja essa variável k que está dando o erro! Em nenhum momento é validado se ela ultrapassou o limite do array, e dependendo da condição ela é incrementada 2 vezes ao passo que a variável i e j é uma!

Dica: As stacktraces elas indicam a linha do erro, dá uma olhada e uma debugada para saber ao certo aonde está errado!

M

é
a logica está errada
mas n consigo arrumar
ja fiz varias operações pro tipo conjunto de inteiros
mas a união ta foda

alguem me ajuda com essa parte lógica?
lembrando que se eu tenho dois conjuntos a={1,2,3,} e b={3,4,5}
a uniao é feita colocando todos em um novo conjunto todos os elementos de a e de b, mas sem repetir, no caso do exemplo o 3 só poderia entrar 1vez

Criado 29 de setembro de 2010
Ultima resposta 29 de set. de 2010
Respostas 2
Participantes 2