Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bruno Souza_86017

Tranformar ArrayList em array de inteiros

Recommended Posts

Então galera, preciso de ajuda, estou com um ArrayList já preenchido e preciso transformá-lo em um array de inteiros para que eu posso comparar cada valor do array dentro de um for.

 

Estou tentando converter ele dessa maneira:

int[] array = (int[])lista.ToArray(typeof(int)); 

 

Problema é que na hora que vai compilar da esse erro de exceção:

At least one element in the source array could not be cast down to the destination array type.

 

Esse é o código:

        private void searchButton_Click_1(object sender, EventArgs e)
       {
           Random r = new Random();
           ArrayList lista = new ArrayList(); // Lista aonde vai ficar guardado os valores
           int vetor = r.Next(0, 100000); // Gerador de número randomico
           int valor = Int32.Parse(textBox1.Text); //Quantidade de números randômicos que seram inseridos na lista
           for (int i = 1; i <= valor; i++)
           {
               lista.Add(vetor.ToString()); // Adiciona um número na lista
           }

           int[] array = (int[])lista.ToArray(typeof(int));  // *Converte a lista em um array de inteiros

           int sersherKey = Int32.Parse(InputTextBox.Text); // Valor a ser buscado no vetor
           int elementIndex = LinearSearch(array, sersherKey);
           if (elementIndex != -1)
               outputLabel.Text = "Valor encontrado no elemento: " + elementIndex;
           else outputLabel.Text = "Valor não encontrado.";
       }

       public int LinearSearch(int[] array, int key)
       {
           for (int n = 0; n < array.Length; n++)
           {
               if (array[n] == key)  //Compara o elemento que foi digitado com os elementos do array
                   return n;
           }

           return -1;
       }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não precisa converter. Mude de arrays:

 

Substitua arraylist pelo nome do seu arraylist.

 

int[] numeros = new int[Arraylist.count];

for (int i = 0; i<Arraylist.count; i++) {

numeros[i] = arraylist[i];

}

arraylist.dispose();

 

 

obs: caso de erro tente:

 

for (int i = 0; i<Arraylist.count-1;i++) {

código normal aqui

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então... na parte:

 

numeros[i] = arraylist[i];

 

fala que eu não posso converter um objeto para inteiro: Cannot implicitly convert type 'object' to 'int'. An explicit conversion exists (are you missing a cast?)

 

Por isso que no código anterior eu tava tentando converter pra um array de inteiros pois estava jsutamente dando esse erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigão consegui fazer aqui, obrigado pela ajuda, na verdade o código que você postou não deu certo pois para converter teria que ser no mínimo uma string e não um objeto diretamente, dai fiz assim:

numeros[i] = int.Parse(Convert.ToString(lista[i]));

 

o/ o/

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.