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

思路如下:

定义输入框的按键事件,使用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 数组随机抽取_Java利用数组随机抽取幸运观众相关推荐

  1. java数组随机抽取分布均匀_java利用数组随机抽取幸运观众

    本文实例为大家分享了java利用数组随机抽取幸运观众的具体代码,供大家参考,具体内容如下 思想: 首先将所有观众姓名生成数组,然后获取数组元素的总数量,再在数组元素中随机抽取元素的下标,根据元素的下标 ...

  2. java利用数组随机抽取幸运观众_java利用数组随机抽取幸运观众

    本文实例为大家分享了java利用数组随机抽取幸运观众的具体代码,供大家参考,具体内容如下 思想: 首先将所有观众姓名生成数组,然后获取数组元素的总数量,再在数组元素中随机抽取元素的下标,根据元素的下标 ...

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

    这篇文章主要介绍了Java利用数组随机抽取幸运观众如何实现,需要的朋友可以参考下 编写程序,事先将所有观众姓名输入数组,然后获得数组元素的总数量,最后在数组元素中随机抽取元素的下标,根据抽取的下标获得 ...

  4. java数组是不是对象_java的数组是对象吗

    数组是对象哦.数组的父类也是Object,每个数组都实现了接口Cloneable and java.io.Serializable.java中数组的创建使用了关键字new,虽然格式和普通的类创建的方式 ...

  5. java类和对象数组传参_java对象,数组作为参数传递给

    java 学习笔记 ( 四 )---- 对象.数组作为参数传递,静态变量.静态方法的使用, 内部类,使用文档注释 2009-10-15 20:21 ***对象作为参数传递*** class passp ...

  6. java 数组 初始化 个数_Java中数组的初始化

    一.什么是初始化 在Java程序开发中,使用数组之前都会对其进行初始化,这是因为数组是引用类型,声明数组只是声明一个引用类型的变量,并不是数组对象本身,只要让数组变量指向有效的数组对象,程序中就可使用 ...

  7. java创建数组的方式_Java创建数组的几种方式总结

    1.一维数组的声明方式: type[] arrayName; 或 type arrayName[]; 附:推荐使用第一种格式,因为第一种格式具有更好的可读性,表示type[]是一种引用类型(数组)而不 ...

  8. java数组定义错误_JAVA定义数组 int a[]=new int[100000] 错误

    我用JAVA定义了一个1W的数组可以使用,但是定义一个10W的数组提示Exceptioninthread"main"java.lang.ArrayIndexOutOfBoundsE ...

  9. java数组二分查找_java 13-1 数组高级二分查找

    查找: 1.基本查找:数组元素无序(从头找到尾) 2.二分查找(折半查找):数组元素有序 pS:数组的元素必须有顺序,从小到大或者从大到小.以下的分析是从小到大的数组 二分查找分析: A:先对数组进行 ...

  10. 对象数组的初始化_JAVA中数组是什么?

    Java中数组是相同类型数据的有序集合.数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成.其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标)来访问它们.数组的三个基本特点: ...

最新文章

  1. VTK:隐式函数之ImplicitQuadric
  2. hdu2074java
  3. C++中的const和指针组合
  4. 关于getline的细节
  5. VS Code 的粘性滚动预览 - 类似于 Excel 的冻结首行
  6. asp版 vbscript RSA公钥加密 / 私钥解密 / 私钥签名 / 公钥验签(支持中文)分段加密解密
  7. OSS上传txt文件乱码问题
  8. Ubuntu(linux) 7z压缩和解压缩命令
  9. 程序员租女友被骗 揭秘“租友”市场背后那些坑
  10. Linux时钟管理clk
  11. 盛夏之梦A Dream of Summer 汉化发布[PC+PSP版]
  12. PostgreSQL官网下载
  13. 记一次python,QQ机器人开发(入门)
  14. ThinkPHP(1)——创建ThinkPHP项目
  15. python中出现[Errno 2] No such file or directory解决方法之一
  16. 端口扫描程序 快速扫描 多线程、范围端口、范围IP、查看历史记录 Windows/MacOS
  17. 实验7 利用Wireshark软件分析TCP
  18. 小程序页面跳转的方式(以钉钉为例)
  19. iNFTnews|Facebook、Twitter先后扑街,社交媒体的未来属于Web3?
  20. Windows10从1909升级21H1到31%卡住解决方法

热门文章

  1. Linux学习笔记5-linux中的磁盘
  2. 第五章:Redis pipeline流水线
  3. 阿里云破世界记录,王坚说新登月计划需十年,我看不用!
  4. MQTT协议(1)-简介
  5. 一站式VDI部署教程(4)配置SMB3.0共享
  6. idea在编辑界面上显示多个文件
  7. can not find Artifact XXX 的原因
  8. web 服务器的作用
  9. mysql 创建和查询数据库和表格
  10. splay tree成段更新,成段查询poj3466