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

package prova;

import java.util.Scanner;

public class Prova2604 {

public static void main(String[] args) {

    Scanner entrada = new Scanner(System.in);

    int n [] = new int [20];

    for(int i = 0; i < n.length; i++) {
        System.out.println("Digite um numero: ");
        n[i] = entrada.nextInt();

    }


}

}

1 curtida

Parece ser o mesmo problema que o seu.

2 curtidas

Vlw mano, resolveu aqui!

colca como (RESOLVIDO)

public class NumerosAleatrorios{

    public static void main(String[] args){

        int numero;
        int[] num = new int[6];
        Random r = new Random();

        for(int i=0; i<num.length; i++){
             numero = r.nextInt(60) + 1;
             for(int j=0; j<num.length; j++){
                   if(numero == num[j] && j != i){
                         numero = r.nextInt(60) + 1;
                   }else{
                        num[i] = numero;
                   }
             }
        }
        //Apresentar na tela o resultado
        for(int i=0; i<num.length; i++){
             System.out.print(num[i]+"  ");
        }
    }
}

:thinking: tópico errado? @Pantrol

so um metodozinho para trabalhar com Randon sem repetições

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.

2 curtidas

Uma forma mais “fácil” ainda, é utilizando ArrayList.

public static void main(String[] args) {

Scanner entrada = new Scanner(System.in);

int n [] = new int [20];
ArrayList<Integer> duplicados = new ArrayList<>();

for(int i = 0; i < n.length; i++) {
    System.out.println("Digite um numero: ");
    int num = entrada.nextInt();
    if(duplicados.contains(num)){
          System.out.println("Número duplicado");
          i--;
    }else{
        n[i] = num;
        dupicados.add(num);
    }

}

}

1 curtida

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.

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class Main {
  private static final Scanner scan = new Scanner(System.in);

  public static void main(String... args) {
    final Set<Integer> positions = new HashSet<>(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);
  }
}
1 curtida

1 x q vejo falar desse set achei interessante.

1 curtida

humm sabia nao, fiz varias x aqui e não deu repetido mas obrigado por me avisar vou ver lá os outros métodos!