Ajuda Metodo Random

Java

31/05/2017

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.

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

Vinícius Angeli

Curtidas 0
POSTAR