数组随机抽取 java_Java利用数组随机抽取幸运观众如何实现
这篇文章主要介绍了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_Java利用数组随机抽取幸运观众如何实现相关推荐
- java 随机四位数字组合_随机组合生成好听的名字(java)
前言 初学java,今天学到了字符串数组,于是乎:利用数组+Random(系统随机生成数字)组合生成随机好听的名字: 如图 图片.png 需求:设置两个数组分别保存姓和名然后利用随机数组合 思考:利用 ...
- java数组随机抽取分布均匀_java利用数组随机抽取幸运观众
本文实例为大家分享了java利用数组随机抽取幸运观众的具体代码,供大家参考,具体内容如下 思想: 首先将所有观众姓名生成数组,然后获取数组元素的总数量,再在数组元素中随机抽取元素的下标,根据元素的下标 ...
- java利用数组随机抽取幸运观众_java利用数组随机抽取幸运观众
本文实例为大家分享了java利用数组随机抽取幸运观众的具体代码,供大家参考,具体内容如下 思想: 首先将所有观众姓名生成数组,然后获取数组元素的总数量,再在数组元素中随机抽取元素的下标,根据元素的下标 ...
- python随机生成二维列表_对python产生随机的二维数组实例详解
对python产生随机的二维数组实例详解 最近找遍了python的各个函数发现无法直接生成随机的二维数组,其中包括random()相关的各种方法,都没有得到想要的结果.最后在一篇博客中受到启发,通过列 ...
- 编写程序,生成一种贯穿10*10字符数组(初始时全为字符'.')的“随机步法”。程序必须随机地从一个元素“走到”另一个元素,每次都向上、向下、向左或向右移动一个元素位置
编写程序,生成一种贯穿10*10字符数组(初始时全为字符'.')的"随机步法".程序必须随机地从一个元素"走到"另一个元素,每次都向上.向下.向左或向右移动一个 ...
- python生成随机数组_python3.x 生成3维随机数组实例
python3.x 生成3维随机数组实例 如下所示: import numpy as np a=np.random.randint(0,10,size=[3,3,3]) print(a) 以上这篇py ...
- 好程序员web前端分享数组及排序、去重和随机点名
好程序员web前端分享数组及排序.去重和随机点名,栈堆结构:堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除. 栈:存放的是路径:容量有限(在一开始被定义之 ...
- Java黑皮书课后题第3章:**3.4(随机月份)编写一个随机产生1和12之间整数的程序,并根据数组1,2,3...显示对应的月份
**3.4(随机月份)编写一个随机产生1和12之间整数的程序,并根据数组1,2,3...显示对应的月份 题目 题目描述 破题 代码 如何理解产生随机数 题目 题目描述 **3.4(随机月份)编写一个随 ...
- 扩容是元素还是数组_数组是如何随机访问元素?数组下标为什么从0开始,而不是1?...
作者:鹏磊 来源:搜云库技术团队 数组如何实现随机访问元素 什么是数组? 数组(Array)是一种线性表数据结构,它用一组连续的内存空间,来存储相同类型的数据. 什么是线性表(Linear List) ...
最新文章
- stackoverflow提问网站(why prefer generator to list)
- 普通Java对象怎么计算大小(字节长度)?
- Elasticsearch学习笔记1
- java ndk 在哪_NDK简介
- 数据结构和算法——栈、队列、堆
- java for mat,在Java绑定中通过OpenCV Mat进行循环
- 计算机的基本数据结构与算法分析,数据结构与算法分析
- idea中maven项目,输出在控制台上的中文乱码问题
- asterisk的sip.conf配置
- python模拟类蠕虫--蠕虫初探
- 安装office未能启动服务器,Office 2010安装时遇到1920错误问题怎么解决?
- 缺少msvcr100.dll,小编教你丢失msvcr100.dll真正解决方法
- 如何快速部署静态页面?
- SqlServer 对象名无效的原因及解决方法
- 【书法】楷书-颜体 vs 欧体
- 涵盖从java入门到深入架构,Linux、云计算、分布式、大数据Hadoop、ios、Android、互联网技术应有尽有
- Fuel-openstack的搭建(二)
- create_calib_data算子说明
- 正则表达式不区分大小写以及解决思路的探索
- virtualbox虚拟机系统网卡设置,既能上网,又能独立ip相互访问
热门文章
- 使用npm install XXX 时出现“failed to fetch from regi...
- 形象!Google Earth增实时雨雪演示功能
- 推荐系列:2008年第07期 总9期
- clion配置_Ubuntu16.04系统下用CLion编译器调试ROS代码详细教程
- ibmmq 通道命令_IBM MQ 从接收通道获取数据
- php lumen auth,学习 Lumen 用户认证 (一)
- java 异常 理解_java中的异常理解
- python readline_python文件读read()、readline()、readlines()对比
- linux那个目录存放用户密码信息,linux试题及答案
- 第十七届全国大学生智能车竞赛:英飞凌芯片第二批申请开放