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?
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;
}
1 curtida