Tulis program untuk memasukkan nama semua pemirsa ke dalam array terlebih dahulu, kemudian dapatkan jumlah total elemen array, dan terakhir ekstrak subskrip elemen dari elemen array secara acak, dan dapatkan nama pemirsa yang beruntung berdasarkan subskrip yang diekstraksi.
Idenya adalah sebagai berikut:
Tentukan peristiwa kunci dari kotak masukan, dan gunakan fungsi getKeyChar() dari kelas KeyEvent untuk menentukan apakah itu adalah karakter pembawa kembali. Jika tidak, maka tidak akan diproses;
Gunakan fungsi isEmpty() untuk menentukan apakah ada string di kotak teks. Jika tidak ada string, tidak ada pemrosesan yang dilakukan;
Jika ini adalah input legal, tambahkan nama orang yang diinput dan karakter pengangkutan kembali ke daftar personel melalui metode append() kelas JTextArea;
Gunakan metode selectAll() untuk memilih semua karakter dalam kotak teks;
Tentukan fungsi yang akan dijalankan ketika tombol "Ekstrak" diklik, dapatkan teks daftar personel melalui metode getText() kelas JTextArea, dan simpan dalam string;
Buat array string satu dimensi, pisahkan string sebelumnya sesuai dengan karakter pengangkutan kembali dan simpan dalam array;
Hasilkan indeks array acak melalui Math.random() sebagai subskrip array pemenang;
Tentukan informasi pemenang termasuk parameter format;
Tambahkan parameter personel ke informasi pemenang melalui metode format() kelas String;
Gunakan metode setText() kelas JTextArea untuk menampilkan informasi pemenang di bidang teks;
Tentukan fungsi yang akan dijalankan ketika tombol "Keluar" diklik, dan gunakan metode System.exit(0) untuk keluar dari program.
Kodenya adalah sebagai berikut:
Copy kode kodenya sebagai berikut:
paket cn.edu.xidian.crytoll;
impor java.awt.BorderLayout;
impor java.awt.Color;
impor java.awt.EventQueue;
impor java.awt.event.ActionEvent;
impor java.awt.event.ActionListener;
impor java.awt.event.KeyAdapter;
impor java.awt.event.KeyEvent;
impor javax.swing.JButton;
impor javax.swing.JFrame;
impor javax.swing.JPanel;
impor javax.swing.JScrollPane;
impor javax.swing.JTextArea;
impor javax.swing.JTextField;
impor javax.swing.JLabel;
impor javax.swing.UIManager;
impor javax.swing.border.EmptyBorder;
impor javax.swing.border.TitledBorder;
Contoh Array kelas publik {
bingkai JFrame pribadi;
bidang teks JTextField pribadi;
scrollPane JScrollPane pribadi;
label JLabel pribadi_1;
JTextArea textArea = JTextArea baru();
pribadi JTextArea textArea_1;
/**
* Luncurkan aplikasi.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
menjalankan kekosongan publik() {
mencoba {
Jendela ArrayExample = ArrayExample baru();
window.frame.setVisible(benar);
} tangkapan (Pengecualian e) {
e.printStackTrace();
}
}
});
}
/**
* Buat aplikasi.
*/
Contoh Array publik() {
inisialisasi();
}
/**
* Inisialisasi isi frame.
*/
kekosongan pribadi inisialisasi() {
frame = new JFrame("Gunakan array untuk memilih pemirsa yang beruntung secara acak");
frame.setBounds(100, 100, 500, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
Label JLabel = JLabel baru("/u8F93/u5165/u5728/u573A/u89C2/u4F17/u59D3/u540D/u6309/u56DE/u8F66");
label.setBounds(10, 10, 132, 15);
frame.getContentPane().add(label);
textField = JTextField baru();
textField.addKeyListener(KeyAdapter baru() {
@Mengesampingkan
public void keyPressed(KeyEvent e) {
do_textField_keyPressed(e);
}
});
textField.setBounds(10, 35, 132, 21);
frame.getContentPane().add(textField);
textField.setColumns(10);
scrollPane = JScrollPane baru();
scrollPane.setBounds(10, 66, 132, 185);
frame.getContentPane().add(scrollPane);
textArea_1 = JTextArea baru();
scrollPane.setViewportView(textArea_1);
label_1 = JLabel baru("/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);
Tombol JButton = JButton baru("/u62BD/u53D6");
tombol.addActionListener(ActionListener baru() {
public void actionPerformed(ActionEvent e) {
do_button_actionPerformed(e);
}
});
tombol.setBounds(404, 187, 70, 23);
frame.getContentPane().add(tombol);
JButton button_1 = JButton baru("/u9000/u51FA");
button_1.addActionListener(ActionListener baru() {
public void actionPerformed(ActionEvent e) {
do_button_1_actionPerformed(e);
}
});
button_1.setBounds(404, 228, 70, 23);
frame.getContentPane().add(button_1);
}
dilindungi kekosongan do_textField_keyPressed(KeyEvent e) {
if (e.getKeyChar() != '/n')// Jika bukan karakter carriage return, maka tidak akan diproses.
kembali;
Nama string = textField.getText();
if (name.isEmpty())// Jika tidak ada string di kotak teks, tidak ada pemrosesan yang dilakukan
kembali;
textArea_1.append(nama + "/n");//Tambahkan nama yang dimasukkan dan karakter pengangkutan kembali ke daftar orang
textField.selectAll();//Pilih semua karakter di kotak teks
}
dilindungi kekosongan do_button_actionPerformed(ActionEvent e) {
String perstring = textArea_1.getText(); // Mendapatkan teks daftar personel
String[] personelArray = perstring.split("/n{1,}");//Dapatkan susunan personel
int indeks = (int) (Math.random() * personelArray.length); // Hasilkan indeks array acak
//Tentukan informasi pemenang termasuk parameter format
String formatArg = "Penonton undian ini:/n/t%1$s/nSelamat kepada %1$5s karena telah menjadi pemenang hadiah utama undian penonton ini."
+ "/n/nKami akan menghadiahkan %1$5s:/n/t20 kotak yogurt kadaluwarsa.";
//Tambahkan parameter personel untuk memenangkan informasi
Info string = String.format(formatArg, personelArray[index]);
textArea.setText(info);//Menampilkan informasi pemenang di area teks
}
dilindungi kekosongan do_button_1_actionPerformed(ActionEvent e) {
Sistem.keluar(0);
}
}
Efeknya seperti yang ditunjukkan pada gambar: