question

Java: Como eu embaralhar os elementos em uma matriz sem duplicar?

Eu tinha isso. Meu arrMiss é a matriz que quero embaralhar. No entanto os elementos é duplicar quando tento imprimi-lo.

Rangen Random = new Random (); Gerador de números //Random
para (int i = 0; i< arrmiss.length;="" i++)="" {="">
int randomPosition = rangen.nextInt(arrMiss.length);
Temp de seqüência de caracteres = arrMiss [i];
arrMiss [i] = arrMiss [randomPosition];
arrMiss [randomPosition] = temp;
System.out.println(arrMiss[randomPosition]);

Por exemplo, eu estou recebendo isso.
Jack de diamantes
Rainha de espadas
Jack de diamantes

Observe que eu tinha dois jack de diamante. Alguém sabe como resolvê-lo para que ele só retornaria um jaque do diamante? para isso, eu não devo usar o arraylist ou implementar qualquer formulário de GUI. Que é por isso que eu queria saber se há alguma forma gerado números não repetidos, para que eu possa atribuir isso aos elementos.
resposta Resposta
Mover de um array para outro.

À matriz terá valores nulos para cada elemento.

Assim

para (int i = 0; i< arrmiss.length;="" i++)="" {="">

Boolean encontrado = false;

enquanto (! encontrado) {

int shuffledPosition = rangen.nextInt(arrMiss.length);

se (shuffledPack [shuffledPosition] = = null) {

shuffledPack [shuffledPosition] = arrMiss [i];

encontrado = true;

} //End se

} //End enquanto

} //End para

Que vai funcionar, mas quanto mais perto você pode encher a matriz baralhada mais difícil torna-se encontrar um espaço vazio aleatório, mesmo que todos eles estão lá.

Uma solução melhor é ter 2 loops. Eu vou deixar você julgar como dividir os loops, mas eu faço metade cada uma e parece funcionar.

Então o primeiro loop for é como acima exceto

para (int i = 0; i< (arrmiss.length="" 2);="" i++)="" {="">

O segundo loop for é então

para (int eu =(arrMiss.length / 2); eu< arrmiss.length;="" i++)="" {="">

int shuffledPosition = 0;

Boolean encontrado = false;

enquanto (! encontrado) {

se (shuffledPack [shuffledPosition] = = null) {

shuffledPack [shuffledPosition] = arrMiss [i];

encontrado = true;

} else {

shuffledPosition + +;

} //End se

} //End enquanto

} //End para

Divertir-se.

Comentários Comentários

Guest
Lúcia na 5 Mar 2023
5
Uma forma de embaralhar os elementos em uma matriz sem duplicar é utilizando um HashSet. O HashSet em Java não permite elementos duplicados, então você pode criar um HashSet, adicionar todos os elementos da sua matriz nele e então converter de volta para um array. Isso vai garantir que os elementos fiquem embaralhados e sem duplicatas. Aqui está um exemplo de como fazer isso:

```
import java.util.*;

public class Main {
public static void main(String[] args) {
String[] arrMiss = {"Jack de diamantes", "Rainha de espadas", "Ás de copas", "Rei de ouros"};
Set<String> set = new HashSet<>(Arrays.asList(arrMiss));
String[] arrayEmbaralhado = set.toArray(new String[0]);
System.out.println(Arrays.toString(arrayEmbaralhado));
}
}
```

É importante notar que essa abordagem não garante a ordem dos elementos, já que um HashSet não mantém a ordem dos elementos. No entanto, isso deve resolver o problema de embaralhar a matriz sem duplicatas. Espero que isso te ajude!

O seu comentário
Acho que a resposta não está correta ou que você gostaria de acrescentar mais
alguma informação? Envie o seu comentário abaixo..

Guest


HTML não é permitido!

Image Code

Digite os caracteres que aparecem na imagem por isso sabemos que você é humano!

Receber um email quando alguém acrescenta outro comentário a esta pergunta


Topo da página


Home  Terms
Copyright © Accelerated Ideas 2005-2024
All rights reserved