Salve rapazeada, preciso de ajuda nesse codigo... Preciso fazer um programa q recebe 20 numeros e nao permita informar numeros repetidos... Só consegui armazenar os numeros, agora nao permitir iguais... se algm puder ajudar
11 respostas
java
Higor_Faria
package prova;
import java.util.Scanner;
public class Prova2604 {
publicstaticvoidmain(String[]args){Scannerentrada=newScanner(System.in);intn[]=newint[20];for(inti=0;i<n.length;i++){System.out.println("Digite um numero: ");n[i]=entrada.nextInt();}}
publicclassNumerosAleatrorios{publicstaticvoidmain(String[]args){intnumero;int[]num=newint[6];Randomr=newRandom();for(inti=0;i<num.length;i++){numero=r.nextInt(60)+1;for(intj=0;j<num.length;j++){if(numero==num[j]&&j!=i){numero=r.nextInt(60)+1;}else{num[i]=numero;}}}//Apresentar na tela o resultadofor(inti=0;i<num.length;i++){System.out.print(num[i]+" ");}}}
so um metodozinho para trabalhar com Randon sem repetições
hugokotsubo2 likes
Na verdade esse código não evita que haja números repetidos. Se você gerar várias vezes, uma hora vai acabar tendo, veja aqui um exemplo.
Para garantir que não haverá repetições, já têm tópicos sobre o assunto: veja aqui e aqui.
G
GabrielA21 like
Uma forma mais “fácil” ainda, é utilizando ArrayList.
public static void main(String[] args) {
Scannerentrada=newScanner(System.in);intn[]=newint[20];ArrayList<Integer>duplicados=newArrayList<>();for(inti=0;i<n.length;i++){System.out.println("Digite um numero: ");intnum=entrada.nextInt();if(duplicados.contains(num)){System.out.println("Número duplicado");i--;}else{n[i]=num;dupicados.add(num);}}
}
wldomiciano1 like
Se o problema dele for igual ao do outro tópico, pelo que entendi é ele que tem que desenvolver o algoritmo que evita repetição e é usando array.
Mas se puder usar Collection, uma solução melhor seria usar um Set.
importjava.util.HashSet;importjava.util.Scanner;importjava.util.Set;publicclassMain{privatestaticfinalScannerscan=newScanner(System.in);publicstaticvoidmain(String...args){finalSet<Integer>positions=newHashSet<>(20);while(positions.size()<20){System.out.print("Digite uma posição: ");if(!positions.add(scan.nextInt()))System.out.print("Vc usou um número repetido! ");}System.out.println(positions);}}
Pantrol1 like
1 x q vejo falar desse set achei interessante.
Pantrol
humm sabia nao, fiz varias x aqui e não deu repetido mas obrigado por me avisar vou ver lá os outros métodos!