Sorteio em Java

3 respostas
Isaiaslima15

Boa Noite, tenho um código simples de sorteio, que quero incrementar.

Não vou explicar a lógica que uso, vou só colar o script, então, oque eu gostaria é de não ter que ficar executando sempre o Eclipse para executar o sorteio. então oque eu estou pensando é. após cada sorteio eu dá um jeito de o mesmo clube não ser mais chamado, vou criar um botao para não precisar executar sempre no eclipse, vocês podem me ajudar com ideias, se alguem tiver vontade pode comentar um método que me ajude também.

private int numero;

Sorteio() {
	numero = (int) (1 + (Math.random() * 17)); 
}

public int getNumero() {
	return this.numero;
}

public void setNumero(int n) {
	numero = n;
}

public static void main(String args[]) {

	Sorteio Sorteio = new Sorteio();
	String resposta = (JOptionPane.showInputDialog("Informe o nome do Jogador "));

	switch (Sorteio.getNumero()) {
	case 1:

		JOptionPane.showMessageDialog(null, resposta + " ficou com Zenit St. Petersburg");

		System.out.println(resposta+"-Zenit St. Petersburg");
		break;
	case 2:
		JOptionPane.showMessageDialog(null, resposta + " ficou com Zenit St. Petersburg");

		System.out.println(resposta+"-Zenit St. Petersburg");
		break;
	case 3:
		JOptionPane.showMessageDialog(null, resposta + " ficou com Zenit St. Petersburg");

		System.out.println(resposta+"-Zenit St. Petersburg");
		break;
	case 4:
		JOptionPane.showMessageDialog(null, resposta + " ficou com Zenit St. Petersburg");

		System.out.println(resposta+"-Zenit St. Petersburg");
		break;
	case 5:
		JOptionPane.showMessageDialog(null, resposta + " ficou com Zenit St. Petersburg");

		System.out.println(resposta+"-Zenit St. Petersburg");
		break;
	case 6:
		JOptionPane.showMessageDialog(null, resposta + " ficou com Zenit St. Petersburg");

		System.out.println(resposta+"-Zenit St. Petersburg");
		break;
	case 7:
		JOptionPane.showMessageDialog(null, resposta + " ficou com Zenit St. Petersburg");

		System.out.println(resposta+"-Zenit St. Petersburg");
		break;
	case 8:
		JOptionPane.showMessageDialog(null, resposta + " ficou com Zenit St. Petersburg");

		System.out.println(resposta+"-Zenit St. Petersburg");
		break;
	case 9:
		JOptionPane.showMessageDialog(null, resposta + " ficou com Zenit St. Petersburg");

		System.out.println(resposta+"-Zenit St. Petersburg");
		break;
	case 10:
		JOptionPane.showMessageDialog(null, resposta + " ficou com Zenit St. Petersburg");

		System.out.println(resposta+"-Zenit St. Petersburg");
		break;
	case 11:
		JOptionPane.showMessageDialog(null, resposta + " ficou com Zenit St. Petersburg");

		System.out.println(resposta+"-Zenit St. Petersburg");
		break;
	case 12:

		JOptionPane.showMessageDialog(null, resposta + " ficou com Zenit St. Petersburg");

		System.out.println(resposta+"-Zenit St. Petersburg");
		break;
	case 13:
		JOptionPane.showMessageDialog(null, resposta + " ficou com Zenit St. Petersburg");

		System.out.println(resposta+"-Zenit St. Petersburg");
		break;
	case 14:
		JOptionPane.showMessageDialog(null, resposta + " ficou com Zenit St. Petersburg");

		System.out.println(resposta+"-Zenit St. Petersburg");
		break;
	case 15:
		JOptionPane.showMessageDialog(null, resposta + " ficou com Zenit St. Petersburg");

		System.out.println(resposta+"-Zenit St. Petersburg");
		break;
	case 16:
		JOptionPane.showMessageDialog(null, resposta + " ficou com Zenit St. Petersburg");

		System.out.println(resposta+"-Zenit St. Petersburg");

		break;
	case 17:

		JOptionPane.showMessageDialog(null, resposta + " ficou com Zenit St. Petersburg");

		System.out.println(resposta+"-Zenit St. Petersburg");

		break;
	case 18:

		JOptionPane.showMessageDialog(null, resposta + " ficou com Zenit St. Petersburg");

		System.out.println(resposta+"-Zenit St. Petersburg");
		break;

	default:

	}

	System.exit(0);
}
}

3 Respostas

aresmaverick

Fala Isaias,

Normalmente aplicações que usam a interface gráfica possuem um loop de execução. Minha sugestão pra sua aplicação é seguinte:

1 - Já que você não quer sortear um numero mais de uma vez. Será necessário armazenar em algum lugar os números já sorteados. Guarda na classe Sorteio, os números sorteados, e caso você sorteie um numero que já saiu, sorteia de novo. Não é performático mais resolve.

2 - Coloca o objeto Sorteio com letra minúscula, pra diferenciar da classe.

3 - Chama sorteio.getNumero() e quando todos os números forem sorteados, você devolve -1.

4 - Coloca a chamada do sorteio.getNumero() dentro de um while. Algo como:

while (sorteio.getNumero() != -1) {
String resposta = …

switch …
}

Isaiaslima15

Eai cara, bom dia;
Resolvi o problema fazendo um metodo bem sujo kkkk;

Mas ai a aplicação fez tanto sucesso que agora quero melhorar ainda mais, criei uma classe modelo chamada time , e quero saber se posso colocar uma imagem como atributo, o metodo de sorteio já tá pronto;

aresmaverick

Quanto ao método sujo:

Sugiro que você escreva um teste para ele usando o JUnit, e comece um processo de refatoração. Teste, refatore, teste, até chegar num estágio em que o código esteja do agrado. Limpo, claro, etc.

Existem algumas maneiras de se guardar e exibir uma imagem, usando swing. Mas eu sugeriria que você tentasse utilizar o JavaFX, para fazer a sua aplicação.

Criado 19 de setembro de 2016
Ultima resposta 20 de set. de 2016
Respostas 3
Participantes 2