先上最后效果图吧:
代码可以直接使用~
个人分析:
由题目要求来看,有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);
}
}
学如逆水行舟,不进则退