Ajuda Metodo Random
Boa Tarde, preciso de ajudar o mais rápido possível na utilização do método Random.
Então construí um programa que cadastra cidades, porém preciso implementar nele a opção em que o usuário digite a cidade em que está e o programa mostre a melhor rota até chegar a cidade final em que ele escolheu, ai e que está o problema eu devo usar o método random para sorteá números aleatórios entre 5 e 30 para as cidades cadastradas é logo depois preciso que o programa mostre a melhor rota para o usuário é qual cidade ele passará até chegar a cidade final.
Preciso muito da ajuda de vocês vou enviar o código quem puder mexer nele e me enviar ainda hoje eu fico muito grato.
Então construí um programa que cadastra cidades, porém preciso implementar nele a opção em que o usuário digite a cidade em que está e o programa mostre a melhor rota até chegar a cidade final em que ele escolheu, ai e que está o problema eu devo usar o método random para sorteá números aleatórios entre 5 e 30 para as cidades cadastradas é logo depois preciso que o programa mostre a melhor rota para o usuário é qual cidade ele passará até chegar a cidade final.
Preciso muito da ajuda de vocês vou enviar o código quem puder mexer nele e me enviar ainda hoje eu fico muito grato.
package Trabalho.Inf.B;
import java.util.ArrayList;
import java.util.List;
public class Cidade {
public String nome;
public int habitantes;
public String prefeito;
public final List<Cidade> vizinhos = new ArrayList<>();
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + (nome == null ? 0 : nome.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj instanceof Cidade) {
Cidade that = (Cidade) obj;
if (this.nome == null) {
return that.nome == null;
}
return this.nome.equals(that.nome);
}
return false;
}
@Override
public String toString() {
return nome == null ? "" : nome;
}
}package Trabalho.Inf.B;
import java.awt.BorderLayout;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;
import java.util.Random;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class Principal {
public static void main(String[] args) {
{
Random random = new Random ();
int j = random.nextInt(30);
while (j<5)
j=random.nextInt();
}
try {
Principal programa = new Principal();
programa.executar();
} catch (Throwable t) {
t.printStackTrace();
} finally {
System.exit(0);
}
}
private static final int OPCAO_CADASTRAR_CIDADE = 1;
private static final int OPCAO_MOSTRAR_CIDADES = 2;
private static final int OPCAO_PESQUISAR_CIDADE = 3;
private static final int OPCAO_MELHOR_ROTA = 4;
private static final int OPCAO_SAIR = 5;
private List<Cidade> cidades = new ArrayList<>();
public void executar() {
int opcao = 0;
do {
opcao = escolheOpcaoMenu();
switch (opcao) {
case OPCAO_CADASTRAR_CIDADE:
cadastrarCidade();
break;
case OPCAO_MOSTRAR_CIDADES:
mostrarCidades();
break;
case OPCAO_PESQUISAR_CIDADE:
pesquisarCidade();
break;
case OPCAO_MELHOR_ROTA:
melhorRota();
break;
case OPCAO_SAIR:
break;
}
} while (opcao != OPCAO_SAIR);
}
private void cadastrarCidade() {
int opcao = 0;
do {
String titulo = "CADASTRO";
Cidade cidade = new Cidade();
cidade.nome = lerTexto("NOME DA CIDADE: ", titulo);
cidade.habitantes = lerInteiro("QUANTIDADE DE HABITANTES: ", titulo);
cidade.prefeito = lerTexto("NOME DO PREFEITO: ", titulo);
if (!cidades.isEmpty()) {
Predicate<Cidade> cidadesDiferentesDaAtual = vizinho -> !vizinho.nome.equals(cidade.nome);
Cidade[] possiveisVizinhos = cidades.stream().filter(cidadesDiferentesDaAtual).toArray(Cidade[]::new);
Cidade[] vizinhosSelecionados = selecionarItens("VIZINHOS: ", possiveisVizinhos);
if (vizinhosSelecionados != null) {
for (Cidade vizinho : vizinhosSelecionados) {
cidade.vizinhos.add(vizinho);
}
}
}
cidades.add(cidade);
opcao = lerInteiro("DIGITE QUALQUER TECLA PARA SAIR DO CADASTRO OU \\n0 PARA CONTINUAR CADASTRANDO", titulo);
} while (opcao == 0);
}
private int escolheOpcaoMenu() {
String titulo = "|ROTA FELIZ|";
String mensagem = "|ESCOLHA A OPÇÃO DESEJADA|\\n"
+ OPCAO_CADASTRAR_CIDADE + ") CADASTRAR CIDADE\\n"
+ OPCAO_MOSTRAR_CIDADES + ") MOSTRA CIDADES CADASTRADAS\\n"
+ OPCAO_PESQUISAR_CIDADE + ") PESQUISAR CIDADE\\n"
+ OPCAO_MELHOR_ROTA + ") MELHOR ROTA\\n"
+ OPCAO_SAIR + ") DIGITE ESC PARA SAIR";
String texto = JOptionPane.showInputDialog(null, mensagem, titulo, JOptionPane.PLAIN_MESSAGE);
return texto != null && !texto.isEmpty() ? Integer.parseInt(texto) : OPCAO_SAIR;
}
private int lerInteiro(String mensagem, String titulo) {
String texto = lerTexto(mensagem, titulo);
return texto != null && !texto.isEmpty() ? Integer.parseInt(texto) : -1;
}
private String lerTexto(String mensagem, String titulo) {
return JOptionPane.showInputDialog(null, mensagem, titulo, JOptionPane.PLAIN_MESSAGE);
}
private void mostrarCidades() {
StringBuilder texto = new StringBuilder();
for (Cidade cidade : cidades) {
texto.append(cidade.nome).append("\\n");
}
String titulo = "TODAS AS CIDADES";
String mensagem = texto.toString();
JOptionPane.showMessageDialog(null, mensagem, titulo, JOptionPane.INFORMATION_MESSAGE);
}
private void pesquisarCidade() {
Cidade cidadeEncontrada = null;
String nome = lerTexto("DIGITE A CIDADE DESEJADA: ", "PESQUISAR CIDADE");
for (Cidade cidade : cidades) {
if (cidade.nome.equals(nome)) {
cidadeEncontrada = cidade;
break;
}
}
String mensagem;
if (cidadeEncontrada == null) {
mensagem = "NAO FOI ENCONTRADA";
} else {
StringBuilder texto = new StringBuilder();
texto.append(cidadeEncontrada.nome).append("\\n")
.append(cidadeEncontrada.habitantes).append(" habitantes\\n")
.append("Prefeito ").append(cidadeEncontrada.prefeito);
if (!cidadeEncontrada.vizinhos.isEmpty()) {
texto.append("\\nVizinhos:\\n");
for (Cidade vizinho : cidadeEncontrada.vizinhos) {
texto.append(" - ").append(vizinho.nome).append("\\n");
}
}
mensagem = texto.toString();
}
String titulo = "CIDADE PESQUISADA";
JOptionPane.showMessageDialog(null, mensagem, titulo, JOptionPane.INFORMATION_MESSAGE);
}
@SuppressWarnings("unchecked")
private <T> T[] selecionarItens(String mensagem, T[] itens) {
String titulo = "CADASTRO";
JPanel panel = new JPanel(new BorderLayout());
panel.add(new JLabel(mensagem), BorderLayout.NORTH);
JList<T> list = new JList<T>(itens);
panel.add(list, BorderLayout.CENTER);
JOptionPane.showMessageDialog(null, panel, titulo, JOptionPane.PLAIN_MESSAGE);
T[] result = (T[]) Array.newInstance(itens[0].getClass(), itens.length);
return (T[]) list.getSelectedValuesList().toArray(result);
}
private void melhorRota() {
String nome = lerTexto("DIGITE A CIDADE EM QUE ESTÁ: ", "MELHOR ROTA");
int sorteio[] = new int[7];
for(int i=0;i<7;i++) {
int numale=random.nextInt(30);
sorteio[i]=numale;
System.out.println(sorteio[i]);
}
}
}
Vinícius Angeli
Curtidas 0