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

思路如下:

定义输入框的按键事件,使用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);

}

}

效果如图所示:

时间: 2014-02-17

java幸运观众抽取_Java利用数组随机抽取幸运观众如何实现相关推荐

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

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

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

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

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

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

  4. java同花顺判定_笔试题:随机抽取五张牌 判断是否为同花顺

    题目: 从一副扑克牌中随机抽取5张牌 判断这五张牌是否是一个同花顺 同花顺:点数连续 花色相同 大小王可以当做任意点数任意花色的牌 简单陈述一下思路 package cn.yangwanhao.wri ...

  5. 从数组随机抽取5个不重复_Power Query 如何保证随机抽取元素不重复

    继续昨天的话题,昨天我们实现完全的随抽取列表元素,有一个问题就是可能几次会抽取同一个位置的元素: 1-50中随机抽取5个数值,点击刷新,就会出现不同的结果,如上图可能会出现两个相同的数值,如何确保每次 ...

  6. java游戏输赢统计_java利用多线程和Socket实现猜拳游戏

    本文实例为大家分享了利用多线程和Socket实现猜拳游戏的具体代码,供大家参考,具体内容如下 实例:猜拳游戏 猜拳游戏是指小时候玩的石头.剪刀.布的游戏.客户端与服务器的"较量", ...

  7. java socket5源码_Java利用TCP协议实现客户端与服务器通信【附通信源码】

    进行TCP协议网络程序的编写,关键在于ServerSocket套接字的熟练使用,TCP通信中所有的信息传输都是依托ServerSocket类的输入输出流进行的. TCP协议概念 先来了解一下TCP协议 ...

  8. java list逆序_Java的数组和list升序,降序,逆序函数Collections.sort和Arrays.sort的使用...

    list升序,降序,逆序 Listlist =new ArrayList(); //如果list是 5 7 2 6 8 1 4 1.升序: Collections.sort(list) //list: ...

  9. java 特殊符号正则_java利用正则表达式处理特殊字符的方法实例

    前言 一串字符串中有特殊符号,可能会影响到相关接口业务,所以需要把字符串中的特殊字符都过滤掉 百度上面搜索大部分处理方法是通过正则表达式, 他需要处理的特殊符号都写进正则表达式中去校验, 这种方式一眼 ...

  10. java多核的利用率_java利用FutureTask、ExecutorService 在多核时代充分利用CPU运算

    java利用FutureTask.ExecutorService 在多核时代充分利用CPU运算 FutureTask.ExecutorService 相关知识,请看java,API 一个使用Futur ...

最新文章

  1. 菜鸟学习JavaScript小实验之函数引用
  2. 从权限管理看互联网产品的盈利方式
  3. 利用Python绘制中国新型冠状病毒疫情图(国家和省)
  4. php 实时更新内容_PHP+Redis 有序集合实现 24 小时排行榜实时更新
  5. django pdf转html5,python – 在Django站点中将HTML转换为PDF
  6. python--xlrd: xlrd.open_workbook excel.xls CompDocError解决办法
  7. java如何使用live2d_小白教程之给网页添加Live2D
  8. MySQL 根据身份证号查询个人信息
  9. 区块链入门导航-磨链社区
  10. MapReduce强化实验
  11. PCB设计指南:安规、布局布线、EMC、热设计、工艺
  12. MAtlab wavefront,MATLAB:像Wavefront算法一样制作矩阵
  13. 【目标检测实验系列】使用yolov3 spp训练西工大遥感数据集NWPU VHR-10(包括如何将NWPU VHR-10转为VOC格式和yolov3 spp实验调试的详细步骤,且附上训练完的权重文件)
  14. 百度、腾讯、滴滴,如何看2019智能网联汽车发展 | 2019互联网岳麓峰会
  15. 什么显卡是个人计算机的基本配置和市场主流,现在()显卡已经成为了个人计算机的基本配置和市场主流。 - 问答库...
  16. Word 2016中给公式自动编号
  17. 人脸识别(二) 人脸1V1,PK明星脸
  18. Vue 中 v-if 和 v-show 的区别和用法
  19. 【HQL】HQL汇总
  20. mysql 收缩日志_MySQL5.7中Undo回收收缩相关参数

热门文章

  1. Ubuntu20软件商店无法正确加载,解决办法
  2. oracle中文谐音,Treasure的歌词中文翻译?? bruno mars 唱的treasure中文歌词谐音 谁懂啊?帮......
  3. 【NISP一级】6.3 社会工程学攻击
  4. 【附源码】计算机毕业设计SSM汽车4S店管理系统
  5. 【Opencv综合应用】自制训练集的人脸识别1——拍摄10张人脸图片
  6. Asymptotic efficiency of nonparametric tests笔记(正在进行中)
  7. 加密软件pgp 使用教程
  8. 抚琴成一快-电吉他内录(Zoom G3为例)
  9. php微信 消息推送 配置,PHP微信公众号模板消息推送
  10. 无线路由器密码破解最新教程完整版