Escreva um programa para inserir antecipadamente os nomes de todos os visualizadores no array, em seguida, obter o número total de elementos do array e, finalmente, extrair aleatoriamente os subscritos dos elementos dos elementos do array e obter os nomes dos visualizadores sortudos com base em os subscritos extraídos.
A ideia é a seguinte:
Defina o evento chave da caixa de entrada e use a função getKeyChar() da classe KeyEvent para determinar se é um caractere de retorno de carro. Caso contrário, não será processado;
Use a função isEmpty() para determinar se há uma string na caixa de texto. Se não houver nenhuma string, nenhum processamento será executado;
Se for uma entrada legal, adicione o nome da pessoa de entrada e o caractere de retorno de carro à lista de pessoal por meio do método append() da classe JTextArea;
Use o método selectAll() para selecionar todos os caracteres na caixa de texto;
Definir a função a ser executada ao clicar no botão "Extrair", obter o texto da lista de pessoal através do método getText() da classe JTextArea e armazená-lo em uma string;
Crie uma matriz de strings unidimensional, divida a string anterior de acordo com o caractere de retorno de carro e armazene-a na matriz;
Gere um índice de array aleatório por meio de Math.random() como o subscrito do array do vencedor;
Definir informações vencedoras, incluindo parâmetros de formato;
Adicione parâmetros pessoais às informações vencedoras por meio do método format() da classe String;
Use o método setText() da classe JTextArea para exibir as informações vencedoras no campo de texto;
Defina a função a ser executada ao clicar no botão "Sair" e utilize o método System.exit(0) para sair do programa.
O código é o seguinte:
Copie o código do código da seguinte forma:
pacote cn.edu.xidian.crytoll;
importar java.awt.BorderLayout;
importar java.awt.Color;
importar java.awt.EventQueue;
importar java.awt.event.ActionEvent;
importar java.awt.event.ActionListener;
importar java.awt.event.KeyAdapter;
importar java.awt.event.KeyEvent;
importar javax.swing.JButton;
importar javax.swing.JFrame;
importar javax.swing.JPanel;
importar javax.swing.JScrollPane;
importar javax.swing.JTextArea;
importar javax.swing.JTextField;
importar javax.swing.JLabel;
importar javax.swing.UIManager;
importar javax.swing.border.EmptyBorder;
importar javax.swing.border.TitledBorder;
classe pública ArrayExample {
quadro JFrame privado;
JTextField privado textField;
privado JScrollPane scrollPane;
rótulo JLabel privado_1;
JTextArea textArea = new JTextArea();
private JTextArea textArea_1;
/**
* Inicie o aplicativo.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
execução nula pública() {
tentar {
Janela ArrayExample = new ArrayExample();
janela.frame.setVisible(true);
} catch (Exceção e) {
e.printStackTrace();
}
}
});
}
/**
* Crie o aplicativo.
*/
public ArrayExample() {
inicializar();
}
/**
* Inicialize o conteúdo do quadro.
*/
private void inicializar() {
frame = new JFrame("Use o array para selecionar aleatoriamente visualizadores sortudos");
frame.setBounds(100, 100, 500, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
Rótulo JLabel = novo JLabel("/u8F93/u5165/u5728/u573A/u89C2/u4F17/u59D3/u540D/u6309/u56DE/u8F66");
rótulo.setBounds(10, 10, 132, 15);
frame.getContentPane().add(label);
campotexto = new JTextField();
textField.addKeyListener(new KeyAdapter() {
@Substituir
public void keyPressed(KeyEvent e) {
do_textField_keyPressed(e);
}
});
textField.setBounds(10, 35, 132, 21);
frame.getContentPane().add(textField);
textField.setColumns(10);
scrollPane = novo JScrollPane();
scrollPane.setBounds(10, 66, 132, 185);
frame.getContentPane().add(scrollPane);
textArea_1 = new JTextArea();
scrollPane.setViewportView(textArea_1);
rótulo_1 = novo JLabel("/u9009/u53D6/u89C2/u4F17/u4EBA/u5458/uFF1A");
rótulo_1.setBounds(180, 10, 132, 15);
frame.getContentPane().add(label_1);
textArea.setBounds(180, 34, 214, 217);
frame.getContentPane().add(textArea);
Botão JButton = novo JButton("/u62BD/u53D6");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
do_button_actionPerformed(e);
}
});
button.setBounds(404, 187, 70, 23);
frame.getContentPane().add(botão);
JButton botão_1 = novo JButton("/u9000/u51FA");
button_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
do_button_1_actionPerformed(e);
}
});
button_1.setBounds(404, 228, 70, 23);
frame.getContentPane().add(botão_1);
}
void protegido do_textField_keyPressed(KeyEvent e) {
if (e.getKeyChar() != '/n')// Se não for um caractere de retorno de carro, não será processado.
retornar;
String nome = textField.getText();
if (name.isEmpty())// Se não houver string na caixa de texto, nenhum processamento será feito
retornar;
textArea_1.append(name + "/n");//Adiciona o nome digitado e o caractere de retorno de carro à lista de pessoas
textField.selectAll();//Seleciona todos os caracteres na caixa de texto
}
void protegido do_button_actionPerformed(ActionEvent e) {
String perstring = textArea_1.getText(); // Obtém o texto da lista de pessoal
String[] pessoalArray = perstring.split("/n{1,}");//Obtém o array pessoal
int index = (int) (Math.random() * personalArray.length); // Gera índice de array aleatório
//Definir informações vencedoras incluindo parâmetros de formato
String formatArg = "Os membros do público deste sorteio:/n/t%1$s/nParabéns a %1$5s por se tornar o vencedor do grande prêmio deste sorteio do público."
+ "/n/nPremiaremos %1$5s:/n/t20 caixas de iogurte vencido.";
//Adiciona parâmetros pessoais para obter informações
String info = String.format(formatArg, personalArray[index]);
textArea.setText(info);//Exibe as informações vencedoras na área de texto
}
void protegido do_button_1_actionPerformed(ActionEvent e) {
Sistema.exit(0);
}
}
O efeito é mostrado na figura: