Estava fazendo um trabalho… que precisava digitar codigos.
um vetor de 40 posições
e o usuario vai inserindo codigos… de 0 a 40 , podendo cadastrar 1 ou 20 ou 30 , qualquer numero entre 1 e 40.
o problema é que eu nao consigo fazer caso ele digite codigo repetido o programa pare e solicite que ele digite novamente o codigo porque ele digitou codigo repetido.
Exemplo
o cara vai digitar 7 codigos…
1- 9
2- 34
3- 44
5- 67
6- 99
ai quando ele vai digitar o 7 codigo, é igual a qualquer um desses 6 ja digitiados… [color=red]resumindo…Como faço pra o programa comparar o ultimo codigo digitado com os codigos que ja foram digitados ???[/color]
você poderia pensar em dois laços! Imagine que ao digitar um número, você compare o número que acabou de ser digitado com todos os outros números, desde a primeira posição até a atual-1.
Um laço seria pra preencher os códigos, e o outro pra comparar os números.
Devem haver outras formas, até mais corretas, mas fica aqui a minha idéia:
for(int i=0; i<5; i++){
int flag = 0;
System.out.println("Favor digite um código: ");
codigos[i] = scanner.nextInt(); //usuário digita o código
while(flag==0){ //enquanto flag for 0, permanece no loop
for(int j = 0; j<i; j++){
if(codigos[j] == codigos[i]){//se valor for repetido, pede para inserir novamente
System.out.println("Esse valor já existe no vetor. \nFavor digite outro código:");
codigos[i] = scanner.nextInt();
}
}
flag = 1;//flag recebe um para identificar que o novo valor foi inserido
//mas para ter certeza que o usuário não sacaneou
//faz mais uma verificação
for(int j = 0; j<i; j++){
if(codigos[j] == codigos[i]){
flag = 0; //se repetiu de novo flag volta pra zero, e começa tudo de novo
}
}
}
}
Amigo nao sei se ter ajuda muito mas voce poderia usar um treeSet para fazer isso ou criar um comparator e sempre da um Sort nesse vetor ai se retorna 0 e porque e igual ai e so remover esse item , " Estou assumindo que os objetos inseridos sao tipo primitivos ou Wrapper".