当前位置: 移动技术网 > IT编程>开发语言>Java > Java利用数组随机抽取幸运观众如何实现

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

2019年07月22日  | 移动技术网IT编程  | 我要评论
编写程序,事先将所有观众姓名输入数组,然后获得数组元素的总数量,最后在数组元素中随机抽取元素的下标,根据抽取的下标获得幸运观众的姓名。 思路如下: 定义输入框的按键事件

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

思路如下:

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

效果如图所示:

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网