当前位置:首页 » 编程语言 » java双色球

java双色球

发布时间: 2023-04-17 21:35:39

java 面向对象 双色球设计

1、球对象


publicclassBall{

privateStringcolor;

privateintnumber;

publicStringgetColor(){
returncolor;
}

publicvoidsetColor(Stringcolor){
this.color=color;
}

publicintgetNumber(){
returnnumber;
}

publicvoidsetNumber(intnumber){
this.number=number;
}


}

2、球池对象


importjava.util.Random;

publicclassBallPond{

privateBall[]balls;

privateBall[]resultBalls;

publicBall[]getBalls(){
returnballs;
}

//生成原始球池
publicvoidsetBalls(Stringcolor){
Ball[]陆枯扒balls=null;
if(color.equals("red")){//生成红球池
Ball[]redBalls=newBall[33];
for(inti=1;i<=33;i++){
Ballball=newBall();
ball.setColor("red");
ball.setNumber(i);
redBalls[i-1]=ball;
}
balls=redBalls;
}else{//生成蓝球池
Ball[]blueBalls=newBall[16];
for(int早昌i=1;i<=16;i++){
Ballball=newBall();
ball.setColor("blue");
ball.setNumber(i);
blueBalls[i-1]=ball;
}
balls=blueBalls;
}
this.balls=balls;
}

publicBall[]getResultBalls(){
returnresultBalls;
}

//生成结果球池
publicvoidsetResultBalls(){
Ball[]resultBalls=null;
Randomr=newRandom();
if(("red").equals(this.balls[0].getColor())){//取红球6个
Ball[]resultRedBalls=newBall[6];
int[]nums=newint[6];
for(inti=0;i<6;i++){
intn=r.nextInt(33)+1;
intflag=0;
for(intj=0;j<6;j++){
if(n==nums[j]){
flag=flag+1;
}
}
if(flag==0){
nums[i]=n;
}
}
for(intk=0;k<6;k++){
inttip=nums[k];
resultRedBalls[k]=this.balls[tip];
}
resultBalls=resultRedBalls;
}else{//取蓝球1个
Ball[]resultBlueBalls=newBall[1];
intn=r.nextInt(16)+1;
resultBlueBalls[0]=this.balls[n];
resultBalls=resultBlueBalls;
}
this.resultBalls=败激resultBalls;
}


}

3、主方法调用


publicclassDoubleColorBall{

publicstaticvoidmain(String[]args){

//红球池
BallPondredBalls=newBallPond();

//蓝球池
BallPondblueBalls=newBallPond();

//初始化球池
redBalls.setBalls("red");
blueBalls.setBalls("blue");

//抽奖
redBalls.setResultBalls();
blueBalls.setResultBalls();

//输出获奖球号
System.out.println("红球:");
for(inti=0;i<6;i++){
System.out.print(redBalls.getResultBalls()[i].getNumber()+"");
}
System.out.println(" 蓝球:");
System.out.print(blueBalls.getResultBalls()[0].getNumber());
}
}

PS:主方法引用以上两个对象的时候注意引入你对象所放位置的包

结果如下:

❷ JAVA双色球问题求解

双色球代码
package tools.ssq;

import java.util.Random;

/**
* 随机生成N组双色球号码
* 红球 33 个球 (01~33) 取 六
* 蓝球 16 个球 (01~16) 取 一
* 结果采用数组存储, 数组可以利用数组扩容追加新的"球号"
*/
public class Ssq {
//定义2个动态数组存储红蓝球结果
private MySet redBall,blueBall;

//初始化数组
public Ssq(){
redBall=new MySet();
blueBall=new MySet();
}

/**
* @param number
* @param size
* 生成number个最大为size不重复的随机数
*/
private void creatRandomNumber(int number,int size){
//定义一个Random拥有生成随机数
Random rd=new Random();
//定义一个数组把redBall赋值给它当兆此number等于1时把blueBall赋值给它
MySet ball=redBall;
if(number==1){
ball=blueBall;
}
//循环生成随机数添加到动态数组中 当数组的长度大于number时退出循环
while(ball.length()<number){
ball.add(rd.nextInt(size));
}
}

/**
* 打印结果
*/
private void printNumber(){
//排序打印
redBall.sort();
System.out.println(redBall.toString()+blueBall.toString());
}

/**
* @param number
* 生成number组号码
*/
private void creatNumberGoupSsq(int number){
for(int numberGroup=0;numberGroup<number;numberGroup++){
creatRandomNumber(6, 33);
creatRandomNumber(1, 16);
printNumber();
redBall.clear();
blueBall.clear();
}
}
public static void main(String[] args){
Ssq ssq=new Ssq();
ssq.creatNumberGoupSsq(1);
}
}

工具随机数组代码
package tools.ssq;

import java.util.Arrays;

/**
* 工具类 动态数组模拟集合 可以动态的对该数族衡迅组进行增删改查
*/
public class MySet {
//定义一个长度为0的存储集合数组(存储集合)和临时数组(为了实现动态数据创建的临时数组) ,和一个标志位用来返回操作的成功与否,集合索引
private Object[] mySet=new Object[0];
private Object[] tmpArray=null;
private boolean flag;
private int index;

/**
* @param obj
* @return flag
* 把传来的对象添加进存储集合
* 按照需求该集合中不应该存在重复元素
*/
public boolean add(Object obj){
//把标志位设置为否
flag=false;
//判断传进来的队形是否在集合中
if(contains(obj)==-1){
//如果不在把集合中的数据和传进来的对象复制到比集合大一的临时集合中
tmpArray=new Object[mySet.length+1];
System.array(mySet, 0, tmpArray, 0, mySet.length);
tmpArray[tmpArray.length-1]=obj;
//在把临时集合赋值给存拦芦储集合 把标志位设为真
mySet=tmpArray;
flag=true;
}
//返回标志位
return flag;
}

/**
* @param obj
* @return flag
* 如果传进来的对象找存储集合中就把它删除
*/
public boolean delete(Object obj){
//设置标志位为否
flag=false;
//获取传进来的对象的索引
index=contains(obj);
//如果不为-1 创建个临时数组长度为存储集合-1
if(index!=-1){
tmpArray=new Object[mySet.length-1];
//把集合中除了索引所指的数据拷贝到临时数组中
System.array(mySet, 0, tmpArray, 0, index);
System.array(mySet, index+1, tmpArray, index, tmpArray.length-index); //length为要拷贝的个数不是下标
//在把临时集合赋值给存储集合
mySet=tmpArray;
//把标志位设为真
flag=true;
}
//返回标志位
return flag;
}

/**
* @return length
* 返回集合的长度
*/
public int length(){
return mySet.length;
}

/**
* 清除集合中所有元素
*/
public void clear(){
mySet=new Object[0];
}

/**
* @param oldObj 被覆盖的对象
* @param obj 覆盖的对象
* @return flag
* 如果被覆盖在存储集合中就拿覆盖对象覆盖它
*/
public boolean update(Object oldObj,Object obj){
//设置标志位为否
flag=false;
//获取被覆盖对象的索引
index=contains(oldObj);
//索引如果不为-1 拿覆盖对象覆盖存储集合索引处的数据,标志位设为真
if(index!=-1){
mySet[index]=obj;
flag=true;
}
//返回标志位
return flag;
}

/**
* @return mySet
* 把集合返回给调用者
*/
public Object[] getAll(){
return mySet;
}

/**
* @param obj
* @return flag
* 判断该对象是否在集合中如果在返回索引不在返回-1
*/
public int contains(Object obj){
//初始化索引为-1
index=-1;
//遍历存储集合
for(int index=0;index<=mySet.length-1;index++){
//拿被遍历的集合元素依次跟传进来的对象比较如果相等的话把索引设置为该元素在存储集合中的索引并退出遍历
if(mySet[index].equals(obj)){
this.index=index;
break;
}
}
//返回索引
return this.index;
}

/**
* 让存储集合中的元素进行升序进行排序
*/
public void sort(){
Arrays.sort(mySet);
}

/* (non-Javadoc)
* @see java.lang.Object#toString()
* 把存储集合中的所有元素按字符串依次添加进字符串缓冲区中 然后返回字符串缓冲区的字符串表现形式
* 要求存储集合中的元素是基本类型或者元素对象已经覆盖过toString方法否则很可以能返回的字符串达不到你所要的要求
*/
@Override
public String toString(){
//定义个StringBuffer用来存储存储集合中的所有元素
StringBuffer sb=new StringBuffer();
//添加前缀
sb.append("[");
//遍历存储集合把所有元素添加进StringBffer中
for(Object obj:mySet){
sb.append(obj).append(" ");
}
//添加后缀
sb.append("]");
//返回StringBuffer
return sb.toString();
}
}

❸ Java双色球程序

我能理解你的思败蚂氏路,但做法有点小问题,这种做法物弊就注定了不好判断是否重复,给你提供一种更好的思路

publicstaticvoidmain(String[]args){
inta[]=newint[6];
intb=(int)(Math.random()*15+1);
// abcd:
// while(true){
// for(inti=0;i<a.length;i++){
// a[i]=(int)(Math.random()*35+1);//这里不要直接把随机出来的数放进数组,没法判断
// }
// for(inti=0;i<a.length-1;i++){ //你是想在这里循环判断是否重复吧,思路是对的,
// //但过程太乱读不明白了,a.length为什么要-1
// for(intj=0;j<a.length-1;j++){
// System.out.println(i);
// System.out.println(j);
// if(a[i]!=a[j]&&i!=j&&i<a.length){
// //问题在这,第一次循环i=0,j=0,没有问题
// //第察散二次循环i还=0,j=1了,那i肯定是不等j,所以必然break,根本没法判断
// System.out.println("----"+j);
// breakabcd;
// }
// }
// }
// }
//下面是我给你提供的方法
int[]balls=newint[35];//创建一个有35个长度的数组作为选球池
for(inti=0;i<balls.length;i++){
balls[i]=i+1;//循环放入1至35
}
boolean[]used=newboolean[balls.length];//创建一个boolean数组,用于记录是否重复
//长度和球池等长
for(inti=0;i<a.length;i++){//循环向a数组中放入元素
for(;;){
intindex=(int)(Math.random()*35);//生成一个随机数,这里不再+1了,因为随机的是下标,+1会出现越界
if(used[index]==true){//如果used中,index的位置为true,则表示已经被随机过了
continue;//如果已经被随机过,则重新循环生成随机数
}
a[i]=balls[index];//如果没有被随机过,则将index所对应位置的元素放入a数组中
used[index]=true;//同时将该index位置设置为true,表示已经被随机过了
break;//退出当前循环,继续下一次向a中添加元素
}
}


for(inti=0;i<a.length;i++){
for(intj=0;j<a.length-1-i;j++){
if(a[j]>a[j+1]){
intt=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}

// for(inti=0;i<a.length;i++){
// System.out.println(a[i]);
// }//输出数组不需要这么麻烦
System.out.println(Arrays.toString(a));
System.out.println("蓝色球为"+b);
}

❹ java语言写的双色球的代码运行的结果怎么蓝球全是222

你这段代有问题的: blueballs [j]=t;
我在这禅帆袜句后台添加了一句输出: System.out.println("blueballs [j]=="+blueballs [j]);
输出轿掘为:
blueballs [j]==2
blueballs [j]==2
blueballs [j]==2
blueballs [j]==2
blueballs [j]==2
blueballs [j]==2
blueballs [j]==2
blueballs [j]==2
blueballs [j]==2
blueballs [j]==2
blueballs [j]==2
blueballs [j]==2
blueballs [j]==2
blueballs [j]==2
blueballs [j]==2

你看你这赋值:int t=blueballs [1]; 全是赋值下标为1的贺激。

❺ java程序编写双色球代码

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

public class cp {
public static void main(String[] args){
Scanner input=new Scanner(System.in);//输入工具类的对象
int[] pm=new int[7];//用来存储选择的号码,总共7个,将最后一个位置放置蓝色球
int[] rb=new int[7];//用来存储随机产生的号码,总共7个,将最后一个位置放置蓝色球
System.out.println("********************欢迎来到中国福利彩票摇奖竞答现场**********************");
//自己要选号 6+1 红色球1-33号 蓝色球1-16
System.out.println("请输入红色球号码(号码在1-33中选)...");
for(int i=0;i<6;i++){
pm[i]=input.nextInt();
}
System.out.println("请输入蓝色球号码(号码在1-16中选)...");
pm[6]=input.nextInt();
System.out.println("mp:"+Arrays.toString(pm));
//机器要随机选号6+1 红色球1-33号 蓝色球1-16
Random random=new Random();//创建随机数生成类对象
for(int i=0;i<6;i++){
rb[i]=random.nextInt(33)+1;//由于生成的随机数是从0开始的,在0到bound-1这个方位中随机一个数
// ,而我们要从一开始到bound,所以最后结果要+1
}
rb[6]=random.nextInt(16)+1;
System.out.println("rb:"+Arrays.toString(rb));
//比较中奖的球数 红色与红色球比较,蓝色与蓝色球之间相互比较
//红色球注重的是中奖的个数 number
int number=0;
//蓝色球只有中奖或不中奖两种情况 true false
boolean boo=false;
if(rb[6]==pm[6]){//判断蓝色球是否中奖,中奖将boo标记改为true,否则不改
boo=true;
}
//判断红色球中奖个数
for(int i=0;i<6;i++){//用来判断红色球是否中奖,如果有一个中奖,将number自增一次
if(rb[i]==pm[i]){
number++;
}
}
//得出比较结果 转化为奖金
switch (number){
case 6:
if(boo){
System.out.println("恭喜你中了一等奖你,奖金为1亿");
}else{
System.out.println("恭喜你中了二等奖你,奖金为30000000");
}

break;
case 5:
if(boo){
System.out.println("恭喜你中了三等奖你,奖金为3000");
}else{
System.out.println("恭喜你中了四等奖你,奖金为200");
}
break;
case 4:
if(boo){
System.out.println("恭喜你中了四等奖你,奖金为200");
}else{
System.out.println("恭喜你中了五等奖你,奖金为10");
}
break;
case 3:
if(boo){
System.out.println("恭喜你中了五等奖你,奖金为10");
}else{
System.out.println("你一个毛也没中<*_*>");
}
break;
case 2:
if(boo){
System.out.println("恭喜你中了六等奖你,奖金为5");
}else{
System.out.println("你一个毛也没中<*_*>");
}
break;
case 1:
if(boo){
System.out.println("恭喜你中了六等奖你,奖金为5");
}else{
System.out.println("你一个毛也没中<*_*>");
}
break;
case 0:
if(boo){
System.out.println("恭喜你中了六等奖你,奖金为5");
}else{
System.out.println("你一个毛也没中<*_*>");
}
break;

}
}

}

❻ 如何用Java做双色球 要控制台 要随机  要判断 还要开奖

说下思路吧,你可以
建一个list,将所有的歼颂双色球号码塞进去.
再建一个list2,存放双色球号码
按双色球个数进入循环
获取范围在0

list.size()-1
的随机数
调用list.remove(随机数)
,取出氏正郑随机号码,并add到另一个list2里
循环清宴结束

❼ java怎样让双色球随机6个出来不重复,我刚开始学,有些还没学到,麻烦用最简单的一种方法

方法很多种,最简单理解的就直接便利一下数组睁橘吵就伍此好了悉侍
for(int n = 0 ; n<i ; n++){
if(a[i]==a[n]){
continue;
}
}
换掉
if(a[i]==a[i-1])
continue;

❽ Java模拟生成双色球

public void main (String[] args){
int[] red=new int[7];
int blue=0;
for(int i=0;i<7;i=i+1){
red[i]=getRandom(33);
//判断重复
while(true){
boolean needcheck=false;
for(int k=0;k<i;k=k+1) { if(red[i]==red[k]){ needcheck=true; }}
if(needcheck){red[i]=red[i]+1; if(red[i]==34){red[i]=1}}else{break;}
}
//判断重复结束圆旦
}
//基腔汪红球赋值结搏仔束
blue=getRandom(16);
System.out.println("生成的红球为:"+ red[0]+red[1]+red[2]+red[3]+red[4]+red[5]+red[6]);
System.out.println("生成的蓝球为:"+ );
}

public int getRandom(int Max){
return Math.floor(Math.random()*33)+1;
}

❾ 用Java写出双色球代码,谁有代码

代码如下:
import java.util.*;
//这是一个模拟双色球机选的程序
public class Start {
// 机选主函数
public static void main(String[] args) {
Start start = new Start();

for (int i = 0; i < 10; i++) {//机选十注
start.beginRed();
start.runBlue();
}

}
// 红球机选号码方法
public void beginRed(){
List num = new ArrayList();
int i = 0;
while(true){
i = (int)(Math.random()*33+1);//随机产生1~33的整数
if (!num.contains(i)) {//判断集合里是否包含元素i
num.add(i);//雹李往集合添启指加元素
if (num.size()==6) {
break;//选够6个号码后跳出循环
}
}
}
System.out.print("您机选的号码是:"+num);//打印集合元素
}
//蓝球机选号码悄肆配方法
public void runBlue(){
int b = 0 ;
b = (int)(Math.random()*16+1);//随机产生1~16的整数

System.out.println("--"+b);
}
}

热点内容
sqlserver默认实例 发布:2024-11-01 22:23:42 浏览:959
sort排序java 发布:2024-11-01 22:23:26 浏览:47
解压后的apk无法安装 发布:2024-11-01 22:22:10 浏览:665
公司的pop服务器地址 发布:2024-11-01 22:22:07 浏览:118
朵唯m30手机配置是真的吗如何 发布:2024-11-01 22:16:56 浏览:680
梦幻西游怎么清理缓存 发布:2024-11-01 22:15:52 浏览:344
如何配置fcm 发布:2024-11-01 22:08:15 浏览:853
原装电脑配置哪个好 发布:2024-11-01 22:05:49 浏览:728
r910服务器能上什么cpu 发布:2024-11-01 22:04:54 浏览:531
postgetphp 发布:2024-11-01 22:03:40 浏览:787