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 {

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();

    }


}

}

11 Respostas

RoinujNosde

Parece ser o mesmo problema que o seu.

Higor_Faria

Vlw mano, resolveu aqui!

Joao_Pedro_Martins

colca como (RESOLVIDO)

Pantrol
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]+"  ");
        }
    }
}
RoinujNosde

:thinking: tópico errado? @Pantrol

Pantrol

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

hugokotsubo

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

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);
    }

}

}

wldomiciano

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);
  }
}
Pantrol

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!

Criado 26 de abril de 2021
Ultima resposta 30 de abr. de 2021
Respostas 11
Participantes 7