Olá pessoal, boa tarde!
Estou com um pequeno problema.
Sou iniciante em java e estou tentado fazer, somente para estudo, um aplicativo desktop que sorteia números, tipo os resultados da loteria, etc, ou seja, não podem se repetir.
Eu tentei sortear os números em um array e depois ir passando para outro array onde iria sendo feita a comparação até eu obter o determinado número de números sorteados desejado.
Bom, no sistema o usuário informa a quantidade de números a serem sorteados, números de jogos/vezes e valor máximo sorteado.
Vou postar aqui o código. Do jeito que esta atualmente funciona normalmente, porém repetindo os números sorteados. Na tentativa de refazer o código fazendo o mesmo funcionar eu removi o meu código com erro e salvei, pois era código de ontem, estava muito sujo e não entendi nada hoje do que tentei rss, por isso não tem neste código a maneira como eu estava tentando, mas eu tentei de várias maneiras, umas se não me engano encontrei aqui no forum, mas não consegui fazer funcionar.
Bom, gostaria também de uma ajuda com o ícone da janela, eu fiz certinho como aprendi, faço o exemplo no notepad, sem usar package e consigo mudar o ícone, no notepad usando package já não consigo mais mudar, é o mesmo no netbeans, não consigo mudar o ícone, alguém poderia me dizer o porque e qual a solução? No código que estou postando tem a maneira a qual estou fazendo.
Aqui vai o código todo do sistema, uma única classe. Se alguém por favor puder me explicar que parte do código eu devo mudar e o que deve ser feito, eu ficarei muito grato. Não precisa ser mastigado, somente explicar e se possível dar um exemplo.
Peço desculpa se o código tiver um pouco bagunçado. O projeto foi feito usando netbeans, porém não usei a opção para criar aplicativos desktop de maneira mastigada, pois meu objetivo é fixar o máximo possível o que venho aprendendo.
Segue o código:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package init;
//classes importadas
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.text.ParseException;
import javax.swing.text.MaskFormatter;
import java.util.Random;
/**
*
* @author Administrador
*/
//classe Bicho
public class Bicho extends JFrame {
//cria JLabel
JLabel lbQntNumeros, lbQntJogos, lbNumMax, lbNumSorteados;
//cria campo para diigitar nome do usuário
JFormattedTextField edQntNumeros, edQntJogos, edNumMax;
MaskFormatter msQntNumeros, msQntJogos, msNumMax;
//cria botões
JButton btSortear;
//Cria listas
JList lNumSorteados;
//array que armazena os valores de cada jogo
int jogo[] = new int[99];
//array que armazena todos os jogos
String listaJogos[] = new String[9999];
//construtor da classe
public Bicho() {
//titulo da janela
super("Sorteia números");
ImageIcon icone = new ImageIcon("imagem.jpg");
setIconImage(icone.getImage());
for(int i = 0; i < listaJogos.length; ++i)
listaJogos[i] = "Jogo " + String.valueOf(1+i) + ": ";
//configura a quantidade de colunas e linhas
setLayout(null);
//cor do formulario
Container fundo = getContentPane();
//fundo.setBackground(Color.red);
/** Inicializa os JLabel */
lbQntNumeros = new JLabel("Quantidade de números");
lbQntJogos = new JLabel("Quantidade de jogos");
lbNumMax = new JLabel("Número de 1 até...");
lbNumSorteados = new JLabel("Números sorteados");
/** fim JLabel */
/** Inicializa os JList */
lNumSorteados = new JList(listaJogos);
lNumSorteados.setVisibleRowCount(5);
JScrollPane barraRolagem = new JScrollPane(lNumSorteados);
lNumSorteados.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
/** fim JList */
/** Inicializa Mascaras */
try {
msQntNumeros = new MaskFormatter("##");
msQntJogos = new MaskFormatter("####");
msNumMax = new MaskFormatter("##");
}
catch(ParseException excp) {}
/** Fim Mascaras */
/** Inicializa JFormattedTextField */
edQntNumeros = new JFormattedTextField(msQntNumeros);
edQntJogos = new JFormattedTextField(msQntJogos);
edNumMax = new JFormattedTextField(msNumMax);
/** fim JTextField e JPasswordField */
/** inicializa os JButton */
btSortear = new JButton("Sortear");
/** fim JButton */
/** Posiciona os componentes */
//JLabel
lbQntNumeros.setBounds(20, 20, 300, 20);
lbQntJogos.setBounds(20, 70, 300, 20);
lbNumMax.setBounds(20, 120, 300, 20);
lbNumSorteados.setBounds(200, 20, 300, 20);
//JFormattedTextField
edQntNumeros.setBounds(20, 40, 150, 20);
edQntJogos.setBounds(20, 90, 150, 20);
edNumMax.setBounds(20, 140, 150, 20);
//JButton
btSortear.setBounds(225, 190, 150, 20);
//JList
barraRolagem.setBounds(200, 40, 370, 120);
/** fim da posição dos componentes */
//botão padrão ao apertar ENTER
getRootPane().setDefaultButton(btSortear);
/** Ação JButton */
btSortear.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
sorteador();
lNumSorteados.repaint();
}
});
/** fim Ação JButton */
/** insere os componentes no formulário */
//JLabel
add(lbQntNumeros);
add(lbQntJogos);
add(lbNumMax);
add(lbNumSorteados);
//JTextField
add(edQntNumeros);
add(edQntJogos);
add(edNumMax);
//JButton
add(btSortear);
//JList
add(barraRolagem);
/** fim da inserção de componentes */
//tamanho do formulário
setSize(600, 250);
//torna o formulário visível
setVisible(true);
//não permite redimencionamento do formulário
setResizable(false);
//mostra o furmulário sempre no centro da tela
setLocationRelativeTo(null);
} //fim do construtor
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Bicho app = new Bicho();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} //fim do método main
public void sorteador() {
//cria objeto Random e atribui a numeroAleatorio
Random numeroAleatorio = new Random();
//String para armazenar os resultados do array jogo acumulado
String jogoFinal = "";
//cria Strings e atribui os valores dos JFormattedTextField
String qntNumeros = edQntNumeros.getText();
String qntJogos = edQntJogos.getText();
String numMax = edNumMax.getText();
//cria integers para armazenar os valores em inteiros
int numeros = 0;
int jogos = 0;
int max = 0;
//verifica se todos os JFormattedTextField foram preenchidos, se não exibe uma mensagem
if (!qntNumeros.trim().equals("") &&
!qntJogos.trim().equals("") &&
!numMax.trim().equals("")) {
numeros = Integer.parseInt(qntNumeros);
jogos = Integer.parseInt(qntJogos);
max = Integer.parseInt(numMax);
//if que verifica se o valor max é suficiente em relação aos digitos
if (max / 2 >= numeros) {
for(int i = 0; i < jogo.length; ++i)
jogo[i] = 0;
//for número de jogos
for(int z = 0; z < jogos; ++z) {
//for que sorteia os números
for(int i = 0; i < numeros; ++i) {
int jogoTmp = 1 + numeroAleatorio.nextInt(max);
jogo[i] = jogoTmp;
} //fim do for que sorteia os números
//for que passa os valores do array para acumular em uma string
for(int i = 0; i < numeros; ++i) {
jogoFinal += String.valueOf(jogo[i]) + " ";
} //fim do for que passa os valores do array para acumular em uma string
//adiciona o jogo no array que guarda os jogos
listaJogos[z] = "Jogo " + String.valueOf(1+z) + ": " + jogoFinal;
//coloca a variável jogoFinal novamente como ""
jogoFinal = "";
} //fim do for número de jogos
}
else
JOptionPane.showMessageDialog(null, "O valor máximo tem que ser no mínimo duas vezes maior que a quantidade de números!!",
"Corriga o valor máximo", JOptionPane.INFORMATION_MESSAGE);
//fim do if que verifica se o valor max é suficiente em relação aos digitos
}
else
JOptionPane.showMessageDialog(null, "É fundamentão que seja digitado valores em todos os campos!!",
"Faltou campo a ser digitado", JOptionPane.INFORMATION_MESSAGE);
//fim do if que verifica se todos os campos foram preenchidos
} //fim do método sorteador
} //fim da classe Bicho
Peço mais uma vez desculpas se o código tiver sujo, é que não tenho muito tempo que comecei a programar em java.