Java拓展——随机数小程序

本文介绍了作者如何使用Java编写一个随机数程序,用于决定团队展示的顺序。程序需确保四个主题被随机抽取且无重复,每个主题内有两个小组通过再次随机决定顺序。通过Math.random()方法解决了产生1或2的随机数问题,尽管还有待学习,作者对此初次实践感到兴奋。

团日活动和外院联谊,支书非要弄一个随机数程序,来决定哪个小组先上场展示,想用c写,但感觉界面不太好看,于是就硬着头皮用java写了.....

支书要求:

一共有四个主题,八个组,每个主题里有之前选定的两个组,先对主题随机抽取,得到主题顺序后,再决定主题内两个小组的出场顺序。

思路:产生四次随机数,并且若有重复,则重新产生,主题内随机数为1,2,分别对应主题内的组号,没有金刚钻,不揽瓷器活,之前刚刚弄完算术题的实训,正好有产生随机数的方法,于是就借来用了。

代码:

MainClass类:

public class MainClass {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ComputerFrame frame;
		frame=new ComputerFrame();
		frame.setTitle("随机数产生");
		frame.setBounds(650,300,550,550);
	}
}

ComputerFrame类(用户界面化设计):

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ComputerFrame extends JFrame{
	JTextField textOne,textTwo;
	JButton getProblem,giveAnswer;
	JLabel operatorLabel,message,tip;
	Teacher teacher1,teacher2;
	ComputerFrame(){
		teacher1=new Teacher();
		teacher1.setMaxInteger1(4);
		
		teacher2=new Teacher();
		//teacher2.setMaxInteger2(2);
		
		setLayout(new FlowLayout());
		
		
		operatorLabel=new JLabel("主题序列:");
		operatorLabel.setFont(new Font("华文隶书",Font.BOLD,60));
		textOne=new JTextField(15);
		textOne.setFont(new Font("宋体",Font.BOLD,60));
		getProblem=new JButton("获取上场组号");
		getProblem.setFont(new Font("方正舒体",Font.BOLD,40));
		
		message=new JLabel("组内次序:");
		message.setFont(new Font("华文隶书",Font.BOLD,60));
		textTwo=new JTextField(15);
		textTwo.setFont(new Font("宋体",Font.BOLD,60));
//	    giveAnswer=new JButton("获取组内次序");
//	    giveAnswer.setFont(new Font("华文琥珀",Font.BOLD,35));
	    tip=new JLabel("请同一主题的另一小组准备");
	    tip.setFont(new Font("方正桃体",Font.BOLD,40));
	    
		add(operatorLabel);
	    add(textOne);
		add(getProblem);
		
		add(message);
		add(textTwo);
		add(tip);
//		add(giveAnswer);
//		textOne.setEditable(false);
//		textTwo.setEditable(false);
		getProblem.setActionCommand("getProblem");
		//giveAnswer.setActionCommand("answer");
		teacher1.setJTextField(textOne,textTwo);
//		teacher2.setJTextField(textTwo);
		getProblem.addActionListener(teacher1);
		textTwo.addActionListener(teacher2);
		//giveAnswer.addActionListener(teacher2);
		setVisible(true);
		validate();
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
	}
}

Teacher类(产生随机数):

import java.util.Random;
import java.awt.event.*;
import javax.swing.*;

public class Teacher implements ActionListener {
	int zunum1 = 1, zunum2 = 2, zunum3 = 3, zunum4 = 4, zunum,zunumx;
	int zuinnum1 = 1, zuinnum2 = 2,zuinnum;
	Random random;
	int maxInteger1,maxInteger2;
	int i = 0, j = 0;
	JTextField textOne, textTwo;
	Teacher() {
		random = new Random();
	}
	public void setMaxInteger1(int n) {
		maxInteger1 = n;
	}
//	public void setMaxInteger2(int n) {
//		maxInteger2 = n;
//	}
	public void setJTextField(JTextField ... t) {
		textOne = t[0];
		textTwo = t[1];
	}
	public void actionPerformed(ActionEvent e) {
		String str = e.getActionCommand();
		if (str.equals("getProblem")) {
			do {
				zunum = random.nextInt(maxInteger1) + 1;
				if (zunum == zunum1) {
					zunum1 = 0;
					break;
				}
				if (zunum == zunum2) {
					zunum2 = 0;
					break;
				}
				if (zunum == zunum3) {
					zunum3 = 0;
					break;
				}
				if (zunum == zunum4) {
					zunum4 = 0;
					break;
				}
			} while (zunum != zunum1 && zunum != zunum2 && zunum != zunum3
					&& zunum != zunum4);
			textOne.setText("第" + zunum + "主题");
			
			zunumx=zunum;
			System.out.println(zunumx+"a");
			if (zunumx==1) {
				zuinnum = (int)(2*(Math.random()+0.5));
				if(zuinnum==1)
					zuinnum=3;
				if(zuinnum==2)
					zuinnum=7;
				System.out.println(zuinnum+"b");
			}
			else if (zunumx==2) {
				zuinnum = (int)(2*(Math.random()+0.5));
				System.out.println(zuinnum+"b");
				if(zuinnum==1)
					zuinnum=5;
				if(zuinnum==2)
					zuinnum=8;

				System.out.println(zuinnum);
			}
			else if (zunumx==3) {
				zuinnum = (int)(2*(Math.random()+0.5));
				if(zuinnum==1)
					zuinnum=2;
				if(zuinnum==2)
					zuinnum=4;

				System.out.println(zuinnum+"c");
			}
			else if (zunumx==4) {
				zuinnum = (int)(2*(Math.random()+0.5));
				System.out.println(zuinnum+"d");
				if(zuinnum==1)
					zuinnum=1;
				if(zuinnum==2)
					zuinnum=6;
			}
			textTwo.setText("第"+zuinnum+"组首先上场");

		}
	}
}

运行结果:





小结:

产生1,2随机数时,zuinnum = random.nextInt(maxInteger1) + 1;语句不知道出了什么幺蛾子问题,询问老师后,得到了另一种方法:zuinnum = (int)(2*(Math.random()+0.5));

第一次做能派上用场的东西,虽然该学习的地方有很多,但内心中还是很激动的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值