Cu
Veja:
e veja também:
Pra mim parece que sua pergunta é duplicada, e tem os mesmos problemas dessas.
Calcular menor rota? xiiiiiiii
Dê uma olhada:
Rapaz já li isso, o problema e que kkk, eu sei o que fazer só não sei como fazer
Não sei se entendi, mas seu problema é em gerar um random entre 5 e 30?
Isso, eu preciso gerar um random que me de 7 números entre 5 e 30, depois colocar esses números nas cidades cadastradas pelo usuário.
new Random().nextInt(26)+5
Opa to começando a resolver o problema.
private void melhorRota() {
String nome = lerTexto("DIGITE A CIDADE EM QUE ESTÁ: ", "MELHOR ROTA");
for (int i = 0; i < 7; i++) {
System.out.println(new Random().nextInt(30));
}
}
Porém imprimiu números iguais e não pode no caso.
O Random não garante que os números sorteados não se repetirão. Quem tem que garantir isso é você, ignorando os números repetidos. Há outros tópicos no fórum explicando como fazer isso, caso você queira. Por exemplo: Numeros aleatorios
Outra opção é você criar uma lista de números de 5 a 30, embaralhá-los e pegar os 7 primeiros. Algo assim:
List<Integer> numeros = new ArrayList<>();
for (int i= 5; i <= 30; i++){
numeros.add(i);
}
Collections.shuffle(numeros); // embaralha a lista
List<Integer> setePrimeirosNumeros = new ArrayList<>();
while (setePrimeirosNumeros.size() < 7){
setePrimeirosNumeros.add(numeros.remove(0)); // remove o primeiro elemento, adicionando na outra lista
}
Abraço.
Mais eu tenho que pegar os números que foram sorteados no Random, entre 5 e 30 não deu certo esse modo que me falou
“Não deu certo” é muito vago. O que não deu certo? O que você fez e por que o resultado não é o que você esperava?
Se está se referindo ao meu segundo código (com shuffle), o while no final “pega” os números e os coloca em um List. Com os números no List, você pode fazer o que quiser. Não há random, porque ele não é necessário. Qual a dificuldade?
Abraço.
A questão e que eu preciso usar o random
Então é obrigatório o uso do Random, é isso? Ou seja, qualquer solução que não use Random não será aceita?
Nesse caso, você continua usando o Random, e garante através do seu código que não haja números duplicados. É algo já perguntado várias e várias vezes, só procurar. Inclusive coloquei um link sobre isso com um exemplo na minha primeira resposta. De novo: Numeros aleatorios
E outro: Arrays randomicos sem repetições e casas aleatorias
E outro: Tentando Random de todas as formas e números ainda repetem!
E outro: https://pt.stackoverflow.com/questions/208069/como-faço-para-gerar-números-aleatórios-entre-5-e-30-em-java (mesmo que o seu problema).
Abraço.
Use um Set e um laço!
O Set lhe garante a unicidade dos valores. E para preenche-lo faça um while (set.size() < 7) . Dentro deste laço vc usa o random para sortear um valor e adicionar no Set.