Java利用数组随机抽取幸运观众如何实现

编写程序,事先将所有观众姓名输入数组,然后获得数组元素的总数量,最后在数组元素中随机抽取元素的下标,根据抽取的下标获得幸运观众的姓名。

思路如下:

定义输入框的按键事件,使用KeyEvent类的getKeyChar()函数判断其是否是回车字符,若不是则不作处理;使用isEmpty()函数判断文本框中是否有字符串,如果没有字符串则不做处理;若为合法输入则通过JTextArea类的append()方法把输入人名与回车符添加到人员列表;使用selectAll()方法选择文本框所有字符;定义点击“抽取”按钮时执行的函数,通过JTextArea类的getText()方法获取人员列表文本,存入字符串;创建一个字符串型一维数组,将之前的字符串按回车符分割后存入该数组;通过Math.random()生成随机数组索引,作为中奖者的数组下标;定义包含格式参数的中奖信息;通过String类的format()方法为中奖信息添加人员参数;使用JTextArea类的setText()方法在文本域显示中奖信息;定义点击“退出”按钮时执行的函数,使用System.exit(0)方法退出程序。代码如下:

代码如下:
package cn.edu.xidian.crytoll;import java.awt.BorderLayout;import java.awt.Color;import java.awt.EventQueue;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.JLabel;import javax.swing.UIManager;import javax.swing.border.EmptyBorder;import javax.swing.border.TitledBorder;public class ArrayExample {    private JFrame frame;    private JTextField textField;    private JScrollPane scrollPane;    private JLabel label_1;    JTextArea textArea = new JTextArea();    private JTextArea textArea_1;    /**     * Launch the application.     */    public static void main(String[] args) {        EventQueue.invokeLater(new Runnable() {            public void run() {                try {                    ArrayExample window = new ArrayExample();                    window.frame.setVisible(true);                } catch (Exception e) {                    e.printStackTrace();                }            }        });    }    /**     * Create the application.     */    public ArrayExample() {        initialize();    }    /**     * Initialize the contents of the frame.     */    private void initialize() {        frame = new JFrame("利用数组随机抽取幸运观众");        frame.setBounds(100, 100, 500, 300);        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        frame.getContentPane().setLayout(null);        JLabel label = new JLabel("\u8F93\u5165\u5728\u573A\u89C2\u4F17\u59D3\u540D\u6309\u56DE\u8F66");        label.setBounds(10, 10, 132, 15);        frame.getContentPane().add(label);        textField = new JTextField();        textField.addKeyListener(new KeyAdapter() {            @Override            public void keyPressed(KeyEvent e) {                do_textField_keyPressed(e);            }        });        textField.setBounds(10, 35, 132, 21);        frame.getContentPane().add(textField);        textField.setColumns(10);        scrollPane = new JScrollPane();        scrollPane.setBounds(10, 66, 132, 185);        frame.getContentPane().add(scrollPane);             textArea_1 = new JTextArea();        scrollPane.setViewportView(textArea_1);        label_1 = new 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);        JButton button = new 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(button);        JButton button_1 = new 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(button_1);    }    protected void do_textField_keyPressed(KeyEvent e) {        if (e.getKeyChar() != '\n')// 不是回车字符不做处理            return;        String name = textField.getText();        if (name.isEmpty())// 如果文本框没有字符串不做处理            return;        textArea_1.append(name + "\n");// 把输入人名与回车符添加到人员列表        textField.selectAll();// 选择文本框所有字符    }    protected void do_button_actionPerformed(ActionEvent e) {        String perstring = textArea_1.getText();// 获取人员列表文本        String[] personnelArray = perstring.split("\n{1,}");// 获取人员数组        int index = (int) (Math.random() * personnelArray.length);// 生成随机数组索引        // 定义包含格式参数的中奖信息        String formatArg = "本次抽取观众人员:\n\t%1$s\n恭喜%1$5s成为本次观众抽奖的大奖得主。"                + "\n\n我们将为%1$5s颁发:\n\t过期的酸奶二十箱。";        // 为中奖信息添加人员参数        String info = String.format(formatArg, personnelArray[index]);        textArea.setText(info);// 在文本域显示中奖信息    }    protected void do_button_1_actionPerformed(ActionEvent e) {        System.exit(0);    }}

效果如图所示:

以上是 Java利用数组随机抽取幸运观众如何实现 的全部内容, 来源链接: utcz.com/p/207537.html

回到顶部