Escriba un programa para ingresar los nombres de todos los espectadores en la matriz por adelantado, luego obtenga el número total de elementos de la matriz y, finalmente, extraiga aleatoriamente los subíndices de los elementos de los elementos de la matriz y obtenga los nombres de los espectadores afortunados según los subíndices extraídos.
La idea es la siguiente:
Defina el evento clave del cuadro de entrada y use la función getKeyChar () de la clase KeyEvent para determinar si es un carácter de retorno de carro. De lo contrario, no se procesará;
Utilice la función isEmpty() para determinar si hay una cadena en el cuadro de texto. Si no hay una cadena, no se realizará ningún procesamiento;
Si es una entrada legal, agregue el nombre de la persona ingresada y el carácter de retorno de carro a la lista de personal mediante el método append() de la clase JTextArea;
Utilice el método selectAll() para seleccionar todos los caracteres en el cuadro de texto;
Defina la función que se ejecutará cuando se haga clic en el botón "Extraer", obtenga el texto de la lista de personal a través del método getText() de la clase JTextArea y guárdelo en una cadena;
Cree una matriz de cadenas unidimensional, divida la cadena anterior según el carácter de retorno de carro y guárdela en la matriz;
Genere un índice de matriz aleatorio a través de Math.random() como subíndice de matriz del ganador;
Definir la información ganadora, incluidos los parámetros de formato;
Agregue parámetros de personal a la información ganadora mediante el método format() de la clase String;
Utilice el método setText() de la clase JTextArea para mostrar la información ganadora en el campo de texto;
Defina la función que se ejecutará cuando se haga clic en el botón "Salir" y utilice el método System.exit(0) para salir del programa.
El código es el siguiente:
Copie el código de código de la siguiente manera:
paquete 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;
clase pública ArrayExample {
marco JFrame privado;
campo de texto JTextField privado;
panel de desplazamiento JScrollPane privado;
etiqueta JLabel privada_1;
JTextArea área de texto = nueva JTextArea();
privado JTextArea textArea_1;
/**
* Inicie la aplicación.
*/
público estático vacío principal (String [] argumentos) {
EventQueue.invokeLater(nuevo Ejecutable() {
ejecución pública vacía() {
intentar {
Ventana ArrayExample = nueva ArrayExample();
ventana.frame.setVisible(verdadero);
} captura (Excepción e) {
e.printStackTrace();
}
}
});
}
/**
* Crear la aplicación.
*/
ejemplo de matriz pública() {
inicializar();
}
/**
* Inicializar el contenido del marco.
*/
inicialización de vacío privado() {
frame = new JFrame("Utilice la matriz para seleccionar aleatoriamente a los espectadores afortunados");
marco.setBounds(100, 100, 500, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(nulo);
Etiqueta JLabel = nueva JLabel("/u8F93/u5165/u5728/u573A/u89C2/u4F17/u59D3/u540D/u6309/u56DE/u8F66");
etiqueta.setBounds(10, 10, 132, 15);
frame.getContentPane().add(label);
campo de texto = nuevo JTextField();
textField.addKeyListener(nuevo KeyAdapter() {
@Anular
tecla pública vacía presionada (Evento clave e) {
do_textField_keyPressed(e);
}
});
textField.setBounds(10, 35, 132, 21);
frame.getContentPane().add(textField);
textField.setColumns(10);
panel de desplazamiento = nuevo JScrollPane();
panel de desplazamiento.setBounds(10, 66, 132, 185);
frame.getContentPane().add(scrollPane);
textArea_1 = nueva JTextArea();
scrollPane.setViewportView(textArea_1);
etiqueta_1 = nueva JLabel("/u9009/u53D6/u89C2/u4F17/u4EBA/u5458/uFF1A");
label_1.setBounds(180, 10, 132, 15);
frame.getContentPane().add(label_1);
textArea.setBounds(180, 34, 214, 217);
frame.getContentPane().add(textArea);
Botón JButton = nuevo JButton("/u62BD/u53D6");
botón.addActionListener(nuevo ActionListener() {
acción vacía pública realizada (ActionEvent e) {
do_button_actionPerformed(e);
}
});
botón.setBounds(404, 187, 70, 23);
frame.getContentPane().add(botón);
JButton botón_1 = nuevo JButton("/u9000/u51FA");
button_1.addActionListener(nuevo ActionListener() {
acción vacía pública realizada (ActionEvent e) {
do_button_1_actionPerformed(e);
}
});
button_1.setBounds(404, 228, 70, 23);
frame.getContentPane().add(button_1);
}
vacío protegido do_textField_keyPressed (KeyEvent e) {
if (e.getKeyChar() != '/n')// Si no es un carácter de retorno de carro, no se procesará.
devolver;
Nombre de cadena = textField.getText();
if (name.isEmpty())// Si no hay ninguna cadena en el cuadro de texto, no se realizará ningún procesamiento
devolver;
textArea_1.append(name + "/n");//Agrega el nombre ingresado y el carácter de retorno de carro a la lista de personas
textField.selectAll();//Selecciona todos los caracteres en el cuadro de texto
}
vacío protegido do_button_actionPerformed (ActionEvent e) {
String perstring = textArea_1.getText();//Obtener el texto de la lista de personal
String[] personalArray = perstring.split("/n{1,}");//Obtener la matriz de personal
int index = (int) (Math.random() * personalArray.length // Genera un índice de matriz aleatorio);
//Definir la información ganadora, incluidos los parámetros de formato
String formatArg = "Los miembros de la audiencia de este sorteo:/n/t%1$s/nFelicitaciones a %1$5s por convertirse en el ganador del gran premio de este sorteo de audiencia."
+ "/n/nOtorgaremos %1$5s:/n/t20 cajas de yogur caducado.";
//Agregar parámetros de personal para obtener información ganadora
Información de cadena = String.format(formatArg, personalArray[índice]);
textArea.setText(info);//Muestra la información ganadora en el área de texto
}
vacío protegido do_button_1_actionPerformed (ActionEvent e) {
Sistema.salir(0);
}
}
El efecto es como se muestra en la figura: