Como imprimir 7 números de 5 a 30 utilizando o Random, depois mostrá-lo para o usuário ?
Random
8 Respostas
Montei uns métodos aqui e comentei o que cada coisa relevante faz, como pode perceber, ele gera 10 números e os números variam de 0 a 50, basta agora você alterar de acordo com sua necessidade, se tiver dúvidas entre em contato via Skype (descrito no meu perfil).
public ClasseTeste(){ //método construtor
int[] numeros = gerarNumeros(); // chama o metodo gerarNumero()
Arrays.sort(numeros); // ordena os numeros
jLabel1.setText(Arrays.toString(numeros)); // imprime em um Label
}
private int[] gerarNumeros() { // metodo que gera os 10 numeros
Random random = new Random();
int[] sorteio = new int[10]; // define10 numeros
for (int i = 0; i < sorteio.length; i++) {
boolean novoNumero = false;
int numero = -1;
while (!novoNumero) { // gera um numero até encontrar um diferente
numero = random.nextInt(50); // verifica do 0 ao 50
novoNumero = verificarExistencia(numero, sorteio); // chama o metodo verifica existencia
}
sorteio[i] = numero;
}
return sorteio;
}
private boolean verificarExistencia(int numero, int[] lista) { // metodo para verificar se o numero ja existe na lista
for (int i = 0; i < lista.length; i++) {
if (numero == lista[i]) {
return false;
}
}
return true;
}
Rapaz vou te envia o código que eu estou tentando fazer, ele tem que imprimir 7 distancia aleatória para cada cidade, e meio complicado não estou conseguindo fazer, tem que imprimir as 7 distancias e depois mostrar para o usuário qual o caminho mais rápido é quantos irá gastar até chegar a cidade desejada, e a distancia minima entre as cidades e 5 e a máxima 30.
package Trabalho.Inf.B;
import javax.swing.JOptionPane;
import java.util.ArrayList;
import java.util.Random;
public class Principal {
public static void main(String[] args){
String City, nCidade, nHabitantes, prefeito, vizinhos;
int x = 0, cont =1;
int y = 9;
ArrayList cd = new ArrayList <>();
Random random = new Random ();
int j = random.nextInt(30);
while (x<5){
j=random.nextInt();
}
String nomes = "";
String cidadeBuscada = "NAO FOI ENCONTRADA";
do {
City = JOptionPane.showInputDialog(null,"|ESCOLHA A OPÇÃO DESEJADA|"
+ "\n1) CADASTRAR CIDADE"
+ "\n2) MOSTRA CIDADES CADASTRADAS"
+ "\n3) PESQUISAR CIDADE"
+ "\n4) MELHOR ROTA"
+ "\n5) DIGITE ESC PARA SAIR","|ROTA FELIZ|", JOptionPane.PLAIN_MESSAGE);
do {
if(City.toUpperCase().equals("1")){
Estado entidade = new Estado();
nCidade = JOptionPane.showInputDialog(null,"NOME DA CIDADE: ","CADASTRO", JOptionPane.PLAIN_MESSAGE);
entidade.setnCidade(nCidade);
nHabitantes = JOptionPane.showInputDialog(null,"QUANTIDADE DE HABITANTES: ","CADASTRO", JOptionPane.PLAIN_MESSAGE);
entidade.setnHabitantes(Integer.parseInt(nHabitantes));
prefeito = JOptionPane.showInputDialog(null,"NOME DO PREFEITO: ","CADASTRO", JOptionPane.PLAIN_MESSAGE);
entidade.setPrefeito(prefeito);
vizinhos = JOptionPane.showInputDialog(null,"VIZINHOS: ","CADASTRO", JOptionPane.PLAIN_MESSAGE);
entidade.setVizinhos(vizinhos);
cd.add(entidade);
x = Integer.parseInt(JOptionPane.showInputDialog(null,"DIGITE QUALQUER TECLA PARA SAIR DO PROGRAMA OU \n0 PARA CONTINUAR CADASTRANDO"));
cont++;
}
}while ((x==0)&&(cont<=2));
if(City.toUpperCase().equals("2")){
for(Estado nome : cd){
nomes += nome+"\n";
}
JOptionPane.showMessageDialog(null, nomes, "TODAS AS CIDADES", JOptionPane.INFORMATION_MESSAGE);
}
if(City.toUpperCase().equals("3")){
String busca = JOptionPane.showInputDialog(null,"DIGITE A CIDADE DESEJADA: ","PESQUISAR CIDADE", JOptionPane.PLAIN_MESSAGE);
for (int i = 0; i < cd.size(); i++) {
if(cd.get(i).getnCidade().equals(busca)) {
cidadeBuscada = (
cd.get(i).getnCidade()+ "\n" +
cd.get(i).getnHabitantes()+ "\n" +
cd.get(i).getPrefeito()+ "\n" +
cd.get(i).getVizinhos()+ "\n");
}
JOptionPane.showMessageDialog(null, cidadeBuscada, "CIDADE PESQUISADA", JOptionPane.INFORMATION_MESSAGE);
}
}
if(City.toUpperCase().equals("4")){
String rota = JOptionPane.showInputDialog(null,"DIGITE A CIDADE EM QUE ESTÁ: ","MELHOR ROTA", JOptionPane.PLAIN_MESSAGE);
for (int i = 0; i < cd.size(); i++) {
}
}
}while (y==9);
}
}
Bom Dia, primeiramente gostaria de saber se você usa java 8. Se esse for o caso você pode fazer simplesmente isso:
int[] array = new Random().ints(7, 5, 3).toArray();
Você tera que importar “java.util.Random;”
Espero ter ajudado, caso tenha interesse :
https://docs.oracle.com/javase/8/docs/api/java/util/Random.html
teria como dar um exemplo com o meu codigo ?
import javax.swing.JOptionPane;
import java.util.ArrayList;
import java.util.Random;
public class Principal {
public static void main(String[] args){
String City, nCidade, nHabitantes, prefeito, vizinhos;
int x = 0, cont =1;
int y = 9;
ArrayList cd = new ArrayList <>();
Random random = new Random ();
int j = random.nextInt(30);
while (x<5){
j=random.nextInt();
}
String nomes = "";
String cidadeBuscada = "NAO FOI ENCONTRADA";
do {
City = JOptionPane.showInputDialog(null,"|ESCOLHA A OPÇÃO DESEJADA|"
+ "\n1) CADASTRAR CIDADE"
+ "\n2) MOSTRA CIDADES CADASTRADAS"
+ "\n3) PESQUISAR CIDADE"
+ "\n4) MELHOR ROTA"
+ "\n5) DIGITE ESC PARA SAIR","|ROTA FELIZ|", JOptionPane.PLAIN_MESSAGE);
do {
if(City.toUpperCase().equals("1")){
Estado entidade = new Estado();
nCidade = JOptionPane.showInputDialog(null,"NOME DA CIDADE: ","CADASTRO", JOptionPane.PLAIN_MESSAGE);
entidade.setnCidade(nCidade);
nHabitantes = JOptionPane.showInputDialog(null,"QUANTIDADE DE HABITANTES: ","CADASTRO", JOptionPane.PLAIN_MESSAGE);
entidade.setnHabitantes(Integer.parseInt(nHabitantes));
prefeito = JOptionPane.showInputDialog(null,"NOME DO PREFEITO: ","CADASTRO", JOptionPane.PLAIN_MESSAGE);
entidade.setPrefeito(prefeito);
vizinhos = JOptionPane.showInputDialog(null,"VIZINHOS: ","CADASTRO", JOptionPane.PLAIN_MESSAGE);
entidade.setVizinhos(vizinhos);
cd.add(entidade);
x = Integer.parseInt(JOptionPane.showInputDialog(null,"DIGITE QUALQUER TECLA PARA SAIR DO PROGRAMA OU \n0 PARA CONTINUAR CADASTRANDO"));
cont++;
}
}while ((x==0)&&(cont<=2));
if(City.toUpperCase().equals("2")){
for(Estado nome : cd){
nomes += nome+"\n";
}
JOptionPane.showMessageDialog(null, nomes, "TODAS AS CIDADES", JOptionPane.INFORMATION_MESSAGE);
}
if(City.toUpperCase().equals("3")){
String busca = JOptionPane.showInputDialog(null,"DIGITE A CIDADE DESEJADA: ","PESQUISAR CIDADE", JOptionPane.PLAIN_MESSAGE);
for (int i = 0; i < cd.size(); i++) {
if(cd.get(i).getnCidade().equals(busca)) {
cidadeBuscada = (
cd.get(i).getnCidade()+ "\n" +
cd.get(i).getnHabitantes()+ "\n" +
cd.get(i).getPrefeito()+ "\n" +
cd.get(i).getVizinhos()+ "\n");
}
JOptionPane.showMessageDialog(null, cidadeBuscada, "CIDADE PESQUISADA", JOptionPane.INFORMATION_MESSAGE);
}
}
if(City.toUpperCase().equals("4")){
String rota = JOptionPane.showInputDialog(null,"DIGITE A CIDADE EM QUE ESTÁ: ","MELHOR ROTA", JOptionPane.PLAIN_MESSAGE);
for (int i = 0; i < cd.size(); i++) {
}
}
}while (y==9);
}
}
Boa tarde, algumas dúvidas:
As distâncias são entre as cidades?
Não ví você chamando as distâncias em nenhum lugar do código.
O programa deve escolher a menor distância?
Cada vez que você imprime a cidade devem ser impressos juntos os 7 valores?
Esses dados 'nHabitantes, prefeitos" são irrelevantes para sua dúvida certo?
[]s
Primeiramente, em que variável você está armazenando as distâncias entre uma cidade e outra ? Crie um vetor para armazenar as distâncias de acordo com o número de cidades fronteiriças, e preencha com os valores informados pelo random.nextInt() em um for de 7 posições
Distancia entre as cidades;
O programa irá mostrar para o usuário a menor distancia em que o usuário irá passar até chegar a cidade desejada, é também irá mostrar as cidades por onde ele passou para chegar até a cidade escolhida;
Sim todas as vezes que imprimir as cidades o programa dará 7 valores diferentes para cada cidade;
Sim, o que vai precisar vai ser o nome da cidade e a distancia entre elas.
poderia me dar um exemplo?