这篇文章主要介绍了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利用数组随机抽取幸运观众如何实现相关推荐

  1. java 随机四位数字组合_随机组合生成好听的名字(java)

    前言 初学java,今天学到了字符串数组,于是乎:利用数组+Random(系统随机生成数字)组合生成随机好听的名字: 如图 图片.png 需求:设置两个数组分别保存姓和名然后利用随机数组合 思考:利用 ...

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

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

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

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

  4. python随机生成二维列表_对python产生随机的二维数组实例详解

    对python产生随机的二维数组实例详解 最近找遍了python的各个函数发现无法直接生成随机的二维数组,其中包括random()相关的各种方法,都没有得到想要的结果.最后在一篇博客中受到启发,通过列 ...

  5. 编写程序,生成一种贯穿10*10字符数组(初始时全为字符'.')的“随机步法”。程序必须随机地从一个元素“走到”另一个元素,每次都向上、向下、向左或向右移动一个元素位置

    编写程序,生成一种贯穿10*10字符数组(初始时全为字符'.')的"随机步法".程序必须随机地从一个元素"走到"另一个元素,每次都向上.向下.向左或向右移动一个 ...

  6. python生成随机数组_python3.x 生成3维随机数组实例

    python3.x 生成3维随机数组实例 如下所示: import numpy as np a=np.random.randint(0,10,size=[3,3,3]) print(a) 以上这篇py ...

  7. 好程序员web前端分享数组及排序、去重和随机点名

    好程序员web前端分享数组及排序.去重和随机点名,栈堆结构:堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除. 栈:存放的是路径:容量有限(在一开始被定义之 ...

  8. Java黑皮书课后题第3章:**3.4(随机月份)编写一个随机产生1和12之间整数的程序,并根据数组1,2,3...显示对应的月份

    **3.4(随机月份)编写一个随机产生1和12之间整数的程序,并根据数组1,2,3...显示对应的月份 题目 题目描述 破题 代码 如何理解产生随机数 题目 题目描述 **3.4(随机月份)编写一个随 ...

  9. 扩容是元素还是数组_数组是如何随机访问元素?数组下标为什么从0开始,而不是1?...

    作者:鹏磊 来源:搜云库技术团队 数组如何实现随机访问元素 什么是数组? 数组(Array)是一种线性表数据结构,它用一组连续的内存空间,来存储相同类型的数据. 什么是线性表(Linear List) ...

最新文章

  1. stackoverflow提问网站(why prefer generator to list)
  2. 普通Java对象怎么计算大小(字节长度)?
  3. Elasticsearch学习笔记1
  4. java ndk 在哪_NDK简介
  5. 数据结构和算法——栈、队列、堆
  6. java for mat,在Java绑定中通过OpenCV Mat进行循环
  7. 计算机的基本数据结构与算法分析,数据结构与算法分析
  8. idea中maven项目,输出在控制台上的中文乱码问题
  9. asterisk的sip.conf配置
  10. python模拟类蠕虫--蠕虫初探
  11. 安装office未能启动服务器,Office 2010安装时遇到1920错误问题怎么解决?
  12. 缺少msvcr100.dll,小编教你丢失msvcr100.dll真正解决方法
  13. 如何快速部署静态页面?
  14. SqlServer 对象名无效的原因及解决方法
  15. 【书法】楷书-颜体 vs 欧体
  16. 涵盖从java入门到深入架构,Linux、云计算、分布式、大数据Hadoop、ios、Android、互联网技术应有尽有
  17. Fuel-openstack的搭建(二)
  18. create_calib_data算子说明
  19. 正则表达式不区分大小写以及解决思路的探索
  20. virtualbox虚拟机系统网卡设置,既能上网,又能独立ip相互访问

热门文章

  1. 使用npm install XXX 时出现“failed to fetch from regi...
  2. 形象!Google Earth增实时雨雪演示功能
  3. 推荐系列:2008年第07期 总9期
  4. clion配置_Ubuntu16.04系统下用CLion编译器调试ROS代码详细教程
  5. ibmmq 通道命令_IBM MQ 从接收通道获取数据
  6. php lumen auth,学习 Lumen 用户认证 (一)
  7. java 异常 理解_java中的异常理解
  8. python readline_python文件读read()、readline()、readlines()对比
  9. linux那个目录存放用户密码信息,linux试题及答案
  10. 第十七届全国大学生智能车竞赛:英飞凌芯片第二批申请开放