Erro:Collections.shuffle

2 respostas Resolvido
P
quero um codigo mais ou menos assim:

import java.util.Collections;

class Main {

public static void main(String[] args) {

int[] lista = {1, 2, 3, 4};

Collections.shuffle(lista);

System.out.print(lista);
}

}



erro:

Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output

1 error



Por que não esta funcionando?

2 Respostas

confuso
Solucao aceita

O Collections.shuffle serve para embaralhar apenas Collections como por exemplo o ArrayList. Um array de int (int[] lista) não é uma collection.

List<Integer> lista = new ArrayList<>();

    lista.add(1);
    lista.add(2);
    lista.add(3);
    lista.add(4);

    Collections.shuffle(lista);

    System.out.print(lista);

Se você precisa embaralhar int[] precisa criar um próprio método seu usando Random:

public static void main(String[] args) {
    int[] array = {1, 2, 3, 4};
    embaralhar(array);

    for (int elemento : array) {
        System.out.print(elemento + " ");
    }
}

static void embaralhar(int[] array) {
    Random geradorNumeroAleatorio = ThreadLocalRandom.current();
    for (int i = array.length - 1; i > 0; i--) {
        int posicaoAleatoria = geradorNumeroAleatorio.nextInt(i + 1);
        troca(array, i, posicaoAleatoria);
    }
}

static void troca(int[] array, int posicaoA, int posicaoB) {
    int temporario = array[posicaoA];
    array[posicaoA] = array[posicaoB];
    array[posicaoB] = temporario;
}
P

Deu certo, Obrigado

Criado 11 de maio de 2019
Ultima resposta 11 de mai. de 2019
Respostas 2
Participantes 2