Olá novamente, neste post, darei prosseguimento na série de posts sobre lógica, e agora vamos complementar o exercício anterior:
- Precisamos ordernar os elementos de um array e remover os elementos repetidos.
Para ordernar os elementos iremos utilizar a mesma resolução do problema anterior utilizando algoritmo bolha para ordenação.
Após solicitar um número x de nomes para o usuário e orderná-los, iremos remover eventuais elementos repetidos neste array.
A principio é necessário a criação:
String nomesSemRepeticao[] = new String[nomes.length];
int quantidadeDeElementosUnicos = 0;
Logo abaixo do algoritmo eu explico como foi pensado.
for( int i = 0 ; i < original.length ; i++ ) {
boolean existe = false;
for( int j = 0 ; j < quantidadeDeElementosUnicos ; j++ ) {
if( elementosSemRepeticao[ j ] .equals( original[ i ] )) {
existe = true;
break;
}
}
if( !existe ) {
elementosSemRepeticao[ quantidadeDeElementosUnicos++ ] = original[ i ];
}
}
for(String nomes:elementosSemRepeticao){
System.out.println(nomes);
}
Explicação:
Foi criado um novo array que conterá somente elementos não repetidos, com o tamanho igual ao o array que armazenou os nomes digitados.
Foi criada a variável quantidadeDeElementosUnicos para termos ciência em qual índice o valor está sendo adicionado no array de elementos unicos.
A seguir foi criado uma estrutura de repetição para pecorrermos o array nomes[]. Na linha abaixo foi criada uma variável booleana para sabermos se foi encontrado algum valor repetido.
O segundo for só poderá ser executado na segunda iteração, pois j (j=0) não será menor do que quantidadeDeElementosUnicos(=0), sendo assim, cairá no segundo if, e caso o valor inverso da variável existe for igual a true, o primeiro elemento é adicionado no array.
Na segunda iteração, o j valerá 0 e quantidadeDeElementosUnicos será iterado valendo 1, assim os próximos elementos serão avaliados e se o valor do array de quantidadeDeElementosUnicos[] for igual ao valor do array nome[], então a variável existe será true, e o break da linha abaixo irá parar a condição, e a execução irá para o segundo if. (Nestas iterações, quando é encontrado um valor igual, o elemento não é adicionado, porque como a variável existe é igual a true, o valor inverso de true não executará o if que adiciona o elemento).
Após todas as iterações ocorrerem e somente os elementos forem adicionados, no final tem um for each que apresenta os valores em ordem alfabética e sem repetição.
Assim concluímos mais um desafio!
O código para resolução deste problema foi localizado no:
https://pt.stackoverflow.com/questions/14339/eliminar-valores-repetidos-array-java
Siga-me nas redes sociais:
Twitter: @devhiranneri
Github:github.com/hiranneri
Linkedin: linkedin.com/in/hiranneri
Obrigado pela leitura e até a próxima :)
Nenhum comentário:
Postar um comentário