学习JAVA 将近2个礼拜写的随机数生成器!

第一次完整的写一个JAVA图形界面程序--留此纪念!!

最终效果如图!

可以设置随机数产生的范围;

可以设置需要产生随机数的个数;

可以设置产生的随机数是否能重复(如果不能重复,那么个数不能大于区间)

import java.awt.*;
import java.awt.event.*;
import java.sql.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import javax.swing.*;

public class FrameMain extends JFrame{
    String s1;
    String s2;
    String s3;
    int s4;
    String sss4;
    boolean chongfu;
    private static final long serialVersionUID = 1L;
    public FrameMain(){
        setTitle("随机数生成器");
        setSize(260,240);
        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        //创建窗口容器
        Container cp=getContentPane();
        //定义为网格组布局
        getContentPane().setLayout(new GridBagLayout());

        /
        final JLabel j1=new JLabel("区间最小值:",SwingConstants.CENTER);
        final GridBagConstraints gridBagConstraints = new GridBagConstraints();
        gridBagConstraints.gridy = 0;// 起始点为第1行
        gridBagConstraints.gridx = 0;// 起始点为第1列
        gridBagConstraints.weightx = 50;// 第一列的分布方式为10%
        gridBagConstraints.weighty = 15;// 第一列的分布方式为10%

        gridBagConstraints.fill = GridBagConstraints.BOTH;
        gridBagConstraints.fill=GridBagConstraints.CENTER;
        getContentPane().add(j1, gridBagConstraints);
        
        final JLabel j2=new JLabel("区间最大值:",SwingConstants.CENTER);
        final GridBagConstraints gridBagConstraints_1 = new GridBagConstraints();
        gridBagConstraints_1.gridy = 1;// 起始点为第2行
        gridBagConstraints_1.gridx = 0;// 起始点为第1列
        gridBagConstraints_1.fill = GridBagConstraints.BOTH;
        gridBagConstraints_1.fill = GridBagConstraints.CENTER;
        gridBagConstraints_1.weighty = 15;// 第一列的分布方式为10%
        getContentPane().add(j2, gridBagConstraints_1);

        final JLabel j3=new JLabel("随机数个数:",SwingConstants.CENTER);
        final GridBagConstraints gridBagConstraints_2 = new GridBagConstraints();
        gridBagConstraints_2.gridy = 2;// 起始点为第3行
        gridBagConstraints_2.gridx = 0;// 起始点为第1列
        gridBagConstraints_2.weighty = 15;// 第一列的分布方式为10%
        gridBagConstraints_2.fill = GridBagConstraints.BOTH;
        gridBagConstraints_2.fill=GridBagConstraints.CENTER;
        getContentPane().add(j3, gridBagConstraints_2);

        final JRadioButton jc=new JRadioButton("是否重复");
        final GridBagConstraints gridBagConstraints_3 = new GridBagConstraints();
        gridBagConstraints_3.gridy = 3;// 起始点为第4行
        gridBagConstraints_3.gridx = 0;// 起始点为第1列
        gridBagConstraints_3.weighty = 15;// 第一列的分布方式为10%
        gridBagConstraints_3.fill = GridBagConstraints.BOTH;
        //
        gridBagConstraints_3.fill=GridBagConstraints.CENTER;
        getContentPane().add(jc, gridBagConstraints_3);

        final JTextField jt1=new JTextField("1");
        final GridBagConstraints gridBagConstraints_4 = new GridBagConstraints();
        gridBagConstraints_4.gridy = 0;// 起始点为第2行
        gridBagConstraints_4.gridx = 1;// 起始点为第1列
        gridBagConstraints_4.weightx = 50;// 第一列的分布方式为10%
        gridBagConstraints_4.fill = GridBagConstraints.BOTH;

        getContentPane().add(jt1, gridBagConstraints_4);
        final JTextField jt2=new JTextField("9");
        final GridBagConstraints gridBagConstraints_5 = new GridBagConstraints();
        gridBagConstraints_5.gridy = 1;// 起始点为第2行
        gridBagConstraints_5.gridx = 1;// 起始点为第2列
        gridBagConstraints_5.fill = GridBagConstraints.BOTH;

        getContentPane().add(jt2, gridBagConstraints_5);
        final JTextField jt3=new JTextField("1");
        final GridBagConstraints gridBagConstraints_6 = new GridBagConstraints();
        gridBagConstraints_6.gridy = 2;// 起始点为第3行
        gridBagConstraints_6.gridx = 1;// 起始点为第2列
        gridBagConstraints_6.fill = GridBagConstraints.BOTH;

        getContentPane().add(jt3, gridBagConstraints_6);
        final JButton jb=new JButton("立即生成");
        final GridBagConstraints gridBagConstraints_7 = new GridBagConstraints();
        gridBagConstraints_7.gridy = 3;// 起始点为第4行
        gridBagConstraints_7.gridx = 1;// 起始点为第2列
        gridBagConstraints_7.fill = GridBagConstraints.BOTH;
        gridBagConstraints_7.fill=GridBagConstraints.CENTER;
        getContentPane().add(jb, gridBagConstraints_7);

        final JTextArea jt4=new JTextArea("",4,1);
        jt4.setLineWrap(true);
        jt4.setFont(new Font("宋体", Font.PLAIN, 20));
        jt4.setEditable(false);//可换行
        final JScrollPane js=new JScrollPane(jt4);
        final GridBagConstraints gridBagConstraints_8 = new GridBagConstraints();
        gridBagConstraints_8.gridy = 4;// 起始点为第5行
        gridBagConstraints_8.gridx = 0;// 起始点为第1列
        gridBagConstraints_8.gridwidth = 2;// 组件占用两行
        gridBagConstraints_8.weighty = 40;// 第一列的分布方式为10%
        gridBagConstraints_8.fill = GridBagConstraints.HORIZONTAL;
        getContentPane().add(js, gridBagConstraints_8);
        //按键添加监控事件
        jb.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent arg0) {
                //随机数生成代码
                if (jc.isSelected()){
                    chongfu=true;
                }else chongfu=false;
                s1= jt1.getText();
                s2= jt2.getText();
                s3= jt3.getText();
                int sss1=Integer.parseInt(s1);
                int sss2=Integer.parseInt(s2);
                int sss3=Integer.parseInt(s3);
                //创建RandomC对象,调用getLod方法返回结果
                RandonC rc = new RandonC(sss1,sss2,sss3,chongfu);
                //将结果载入文本框4
                jt4.setText(rc.getlod().toString());
            }
        });
        setVisible(true);
    }
    public static void main(String[] args) {
        new FrameMain();
    }
}

以上是界面

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class RandonC {
    private int low;
    private int high;
    private int num;
    private boolean chongfu;

    RandonC() {

    }

    public RandonC(int low, int high, int num, boolean chongfu) {
        this.low = low;
        this.high = high;
        this.num = num;
        this.chongfu = chongfu;
    }

    public StringBuffer getlod() {
        StringBuffer temp = new StringBuffer();
        List<Integer> s0 = new ArrayList<>();

        for (; ; ) {
            int math = (int) (Math.random() * (this.high - this.low + 1)) + this.low;
            if (chongfu) {
                s0.add(math);
            }
            if (!chongfu && (this.high - this.low + 1) >= this.num) {
                if (!s0.contains(math)) {
                    s0.add(math);//通过contains判断新的随机数是否在容器中
                }
            }
            if(!chongfu && (this.high - this.low + 1) < this.num){
                break;
            }
                if (s0.size() == this.num) {
                break;
            }
        }
        Collections.sort(s0);
        for (Integer sc : s0) {
            temp.append(sc + "  ");
        }
        if(!chongfu && (this.high - this.low + 1) < this.num){
            temp.append("超出范围");
        }
        return temp;
    }

}

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值