java雙色球
❶ 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);
}
}