Pessoal ,sou iniciante e não estou conseguindo fazer com que um vetor nao aceite que o usuario digite um numero que ja contem no vetor … ja tentei de varias formas , alguem poderia me dar uma ajuda ?
importjava.util.Scanner;publicclassVetor13{publicstaticvoidmain(String[]args){int[]x=newint[5];inti,j=0;for(i=0;i<x.length;i++){for(j=0;j<=x.length;j++){do{System.out.print("Insira o "+(i+1)+" - numero : ");x[i]=newScanner(System.in).nextInt();}while(x[j]==x[i]);}}}}
Para ficar mais simples, faça um método que simplesmente percorra os elementos do array e informe se existe um número igual ao passado por parâmetro. Algo assim:
Aí você percorre os elementos do array e, se não houver repetido (vc sabe pelo método contém), vc insere. Se não quiser implementar o método contem, como sugeri, leia sobre a classe Arrays, ela contém métodos que já contém esta lógica.
Vinicius_Zibetti_Res
int[] vetor = new int[5];
boolean[] dp = new boolean[9999999];
for(int i = 0; i < 5; ){
leia numero;
if(!dp[numero]){
dp[numero] = true;
vetor[i++] = numero;
}
}
Funciona de numeros >= 0 && numeros < 9999999;
lanlico
Cara, tem tanto tempo que não vejo um algoritmo com complexidade O(n^3).
Vinicius_Zibetti_Res
Vc ta precisando estudar mais algoritmos…
D
diego.s.parente
Boa tarde!
Também sou novo no seguimento e tenho uma dúvida parecida (se não igual), mas ainda não domino a linguagem Java. O exercício esta em portugol:
algoritmo“Megasena”varvet_megasena:vetor[1…6]deinteironome,continua:caracteri,cont,num,k:inteiroinicioparaide1ate6facaescreva("Entre com uma dezena: ")repitaleia(vet_megasena[i])se(vet_megasena[i]<1)ou(vet_megasena[i]>60)entaoescreval(“Valorinvalido!”)escreva("Entre com uma dezena: ")fimseate(vet_megasena[i]>=1)e(vet_megasena[i]<=60)fimpara…Nessetrechodocódigo,gostariadeadicionaracondiçãoqueaodigitarumnúmerojáexistenteelemandeamensagem:“Númerojádigitado!”.Comopossofazer?