zoukankan      html  css  js  c++  java
  • Java利用数组随机抽取幸运观众

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

    思路如下:

    1. 定义输入框的按键事件,使用KeyEvent类的getKeyChar()函数判断其是否是回车字符,若不是则不作处理;
    2. 使用isEmpty()函数判断文本框中是否有字符串,如果没有字符串则不做处理;
    3. 若为合法输入则通过JTextArea类的append()方法把输入人名与回车符添加到人员列表;
    4. 使用selectAll()方法选择文本框所有字符;
    5. 定义点击“抽取”按钮时执行的函数,通过JTextArea类的getText()方法获取人员列表文本,存入字符串;
    6. 创建一个字符串型一维数组,将之前的字符串按回车符分割后存入该数组;
    7. 通过Math.random()生成随机数组索引,作为中奖者的数组下标;
    8. 定义包含格式参数的中奖信息;
    9. 通过String类的format()方法为中奖信息添加人员参数;
    10. 使用JTextArea类的setText()方法在文本域显示中奖信息;
    11. 定义点击“退出”按钮时执行的函数,使用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("u8F93u5165u5728u573Au89C2u4F17u59D3u540Du6309u56DEu8F66");
    		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("u9009u53D6u89C2u4F17u4EBAu5458uFF1A");
    		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("u62BDu53D6");
    		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("u9000u51FA");
    		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() != '
    ')// 不是回车字符不做处理
                return;
            String name = textField.getText();
            if (name.isEmpty())// 如果文本框没有字符串不做处理
                return;
            textArea_1.append(name + "
    ");// 把输入人名与回车符添加到人员列表
            textField.selectAll();// 选择文本框所有字符
        }
    	protected void do_button_actionPerformed(ActionEvent e) {
            String perstring = textArea_1.getText();// 获取人员列表文本
            String[] personnelArray = perstring.split("
    {1,}");// 获取人员数组
            int index = (int) (Math.random() * personnelArray.length);// 生成随机数组索引
            // 定义包含格式参数的中奖信息
            String formatArg = "本次抽取观众人员:
    	%1$s
    恭喜%1$5s成为本次观众抽奖的大奖得主。"
                    + "
    
    我们将为%1$5s颁发:
    	过期的酸奶二十箱。";
            // 为中奖信息添加人员参数
            String info = String.format(formatArg, personnelArray[index]);
            textArea.setText(info);// 在文本域显示中奖信息
        }
    	protected void do_button_1_actionPerformed(ActionEvent e) {
    		System.exit(0);
        }
    }
    

      效果如图所示:

  • 相关阅读:
    什么是进程!
    【2016.5.9】不考研,那就好好学
    ajax的秘密
    Input标签中Type的类型及详细用法
    html5 Canvas颜色渐变(画图很重要)
    页面的自动滚动效果
    HTML:让表单 文本框 只读,不可编辑的方法
    <s:property/>标签
    在HTML中实现上划线,中划线和下划线
    Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
  • 原文地址:https://www.cnblogs.com/cysolo/p/3552982.html
Copyright © 2011-2022 走看看