Java利用数组随机抽取幸运观众如何实现
Java利用数组随机抽取幸运观众如何实现
发布时间:2016-12-28 来源:查字典编辑
摘要:编写程序,事先将所有观众姓名输入数组,然后获得数组元素的总数量,最后在数组元素中随机抽取元素的下标,根据抽取的下标获得幸运观众的姓名。思路如...

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

思路如下:

定义输入框的按键事件,使用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("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() != '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 = "本次抽取观众人员:nt%1$sn恭喜%1$5s成为本次观众抽奖的大奖得主。"

+ "nn我们将为%1$5s颁发:nt过期的酸奶二十箱。";

// 为中奖信息添加人员参数

String info = String.format(formatArg, personnelArray[index]);

textArea.setText(info);// 在文本域显示中奖信息

}

protected void do_button_1_actionPerformed(ActionEvent e) {

System.exit(0);

}

}

效果如图所示:

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

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Java学习
热门Java学习
编程开发子分类