零基础开发彩票摇号项目(激发编程兴趣)+巧妙运用Set去重+界面简单

在这里插入图片描述

先上最后效果图吧:
代码可以直接使用~

在这里插入图片描述
个人分析:
由题目要求来看,有6个红球,并且一个关键点就是每个红球的数字是不重复的,能立马想到什么呢?我们难不成还要用数组来来一个个弄吗,比如1-32出现了一次然后就消除那个数,继续随机。。。那样,可想而知比较麻烦。我的做法是放入set集合里面,当set的大小不等于,那么我们就一直往set里面放数据。这样我们每次的数据就不会重复了!

但是呢,题目还有一个要求就是我们得到的彩票号需要从小到大排序,所以我又把6个红球数字放入了一个数组里面了 然后利用java自带的排序数组的类 调用一下 进行排序 然后先输出到控制台 为了确认是产生了6个随机红球数

	Arrays.sort(arr,0,6);
	for(int k=0;k<6;k++)
	{
		System.out.print(arr[k]+" ");
	}

另外,可能有些人会有点疑惑那个背景的红圆和蓝圆怎么出来的,这里我就写了paint方法,具体也不太好解释 java里面有这个方法,我们只需重载一下就好了,具体方法代码如下:

	public void paint(Graphics g) { 
	super.paint(g); 
	int /*x0 = 150,*/ y0 = 150;
	int r1 = 50, r2 = 50, r3 = 50;
	g.setColor(Color.RED);
	g.drawOval(100 - r1, y0- r1, r1, r1);
	g.drawOval(170 - r2, y0- r2, r2, r2); 
	g.drawOval(240- r3, y0 - r3, r3, r3); 
	g.drawOval(310- r3, y0 - r3, r3, r3); 
	g.drawOval(380- r3, y0 - r3, r3, r3); 
	g.drawOval(450- r3, y0 - r3, r3, r3); 

	g.setColor(Color.BLUE); 
	g.drawOval(520- r3, y0 - r3, r3, r3); 
		 
	} 

个人感受:
对于这个小项目呢,纯粹是为了激发编程兴趣做的,要完善它的话,我们可以加事件啊,比如通过按一个开始按钮,就会产生一个随机数,更有甚者我们可以与多线程扯上关系,比如按了开始,就会一直出现随机的7个数字,然后按一个停止才停止,这就完美体现了我们的彩票摇号的特点了,反正,起初还是以简单为主,毕竟兴趣很重要嘛!
然后对于Eclipse不会装的也可以看我这个博客 里面是19年目前最新的安装了 但是jdk还是要自己下,环境变量也要自己配 这里我就没有写了,可以参考别人的博客,别人好的博客写的很清晰!

最新的Eclipse安装:
https://blog.csdn.net/weixin_42429718/article/details/88134227

具体代码如下:

import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.Graphics;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Random;
import java.util.Set;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class Demo01 extends JFrame {
	private Container c;
	private JPanel jp;
	private JTextField jtf;
	private JLabel lb1,lb2,lb3,lb4,lb5,lb6,lb;
	public Demo01(int a[],int num)
	{
		c=getContentPane();
		jp=new JPanel();
		jp.setLayout(null);
		jtf=new JTextField();
		setTitle("彩票摇号程序");
		Font f = new Font("宋体",Font.PLAIN,40); 
		lb1=new JLabel(""+a[0]);
		lb1.setFont(f);
		lb1.setForeground(Color.red);
		lb1.setBounds(52, 70, 40, 40);
		
		lb2=new JLabel(""+a[1]);
		lb2.setFont(f);
		lb2.setForeground(Color.red);
		lb2.setBounds(122, 70, 40, 40);
		
		lb3=new JLabel(""+a[2]);
		lb3.setFont(f);
		lb3.setForeground(Color.red);
		lb3.setBounds(183, 70, 40, 40);
		
		lb4=new JLabel(""+a[3]);
		lb4.setFont(f);
		lb4.setForeground(Color.red);
		lb4.setBounds(256, 70, 40, 40);
		
		lb5=new JLabel(""+a[4]);
		lb5.setFont(f);
		lb5.setForeground(Color.red);
		lb5.setBounds(325, 70, 40, 40);
		
		lb6=new JLabel(""+a[5]);
		lb6.setFont(f);
		lb6.setForeground(Color.red);
		lb6.setBounds(396, 70, 40, 40);
		
		lb=new JLabel(""+num);
		lb.setFont(f);
		lb.setForeground(Color.blue);
		lb.setBounds(471, 70, 40, 40);
		/*for(int i=0;i<6;i++)
		{
			jtf.setText(jtf.getText()+" "+a[i]);
		}*/
		jp.add(lb1);
		jp.add(lb2);
		jp.add(lb3);
		jp.add(lb4);
		jp.add(lb5);
		jp.add(lb6);
		jp.add(lb);
		c.add(jp);
		
		setVisible(true);
		setSize(600, 300); 
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLocationRelativeTo(null);
	}
	
	 public void paint(Graphics g) { 
		  super.paint(g); 
		 
		   
		  int /*x0 = 150,*/ y0 = 150;
		  int r1 = 50, r2 = 50, r3 = 50;
		  g.setColor(Color.RED);
		  g.drawOval(100 - r1, y0- r1, r1, r1);
		  g.drawOval(170 - r2, y0- r2, r2, r2); 
		  g.drawOval(240- r3, y0 - r3, r3, r3); 
		  g.drawOval(310- r3, y0 - r3, r3, r3); 
		  g.drawOval(380- r3, y0 - r3, r3, r3); 
		  g.drawOval(450- r3, y0 - r3, r3, r3); 

		  g.setColor(Color.BLUE); 
		  g.drawOval(520- r3, y0 - r3, r3, r3); 
		 
		 } 
	
	public static void main(String[] args) {
		
		Random rd=new Random();
		Set set=new HashSet();
		int []arr=new int [6];
		while(set.size()!=6)
		{
			int res=rd.nextInt(32)+1;//产生1-32的随机数
			set.add(res);
		}
		//输出set集合里面的数据,用来测试是否是1-32的6个随机数
		//System.out.println(set);
		Iterator it=set.iterator();
		int i=0;
		//通过迭代器对set进行遍历 然后放入arr数组里面
		while(it.hasNext())
		{
			int num=(Integer) it.next();
			arr[i]=num;
			i++;
		}
		//将set集合里面数据放入arr数组里面 然后通过java排序函数进行从小到大的排序
		Arrays.sort(arr,0,6);
		for(int k=0;k<6;k++)
		{
			System.out.print(arr[k]+" ");
		}
		System.out.println();
		//测试最后一个蓝色球 产生1-16的随机数
		int res2=rd.nextInt(16)+1;//产生1-16的随机数
		System.out.println(res2);
		//对象
		new Demo01(arr,res2);

	}

}

学如逆水行舟,不进则退

猜你喜欢

转载自blog.csdn.net/weixin_42429718/article/details/88669622