截图:
为精河等地区用户提供了全套网页设计制作服务,及精河网站建设行业解决方案。主营业务为成都做网站、成都网站设计、精河网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
选取红色球号码方法:
/**
* 随机选取红色球
*
* 获取1~33其中一个数
*
* 0 = Math.random 1
*/
private int randomOneRedValue() {
int randomValue = (int) (Math.random() * 33 + 1);
return randomValue;
}
选取蓝色球号码方法:
/**
* 随机选取蓝色球号码
*
* 获取1~16的数值
*
* @return
*/
private int randomOneBlueValue() {
int randomValue = (int) (Math.random() * 15 + 1);
return randomValue;
}
测试:
public class Test1 {
public static void main(String[] arg) {
Test1 localTest1 = new Test1();
// 双色球 :红色球号码 + 蓝色球号码
// 六个红色球和一个蓝色球号码
// 红色球号码从1~33中选择
// 蓝色球号码从1~16中选择
// 一等奖:七个号码相符(六个红色号码和一个蓝色球号码)(红色球号码顺序不限,下同)
// 二等奖:六个红色球号码相符;
// 三等奖:五个红色球号码,或者四个红色球号码和一个蓝色球号码相符;
// 四等奖:五个红色球号码,或者三个红色球号码和一个蓝色球号码相符;
// 五等奖:四个红色球号码,或者三个红色球号码和一个蓝色球号码相符;
// 六等奖:一个蓝色球号码相符(有误红色球号码相符均可);
// 例如:红色球号码 01 06 13 19 24 28 蓝色球号码 16
System.out.println("开始出奖");
// 定义双色球数组,大小为7
String[] values = new String[7];
for (int i = 0; i 7; i++) {
if (i == 6) {
int blueValue = localTest1.randomOneBlueValue();
if (blueValue 10) {
values[i] = "0" + blueValue;
} else {
values[i] = String.valueOf(blueValue);
}
} else {
int redValue = localTest1.randomOneRedValue();
if (redValue 10) {
values[i] = "0" + redValue;
} else {
values[i] = String.valueOf(redValue);
}
}
}
System.out.println();
System.out.println("出奖结束");
System.out.println();
System.out.print("双色球开奖号码:");
// 打印双色球号码
for (String value : values) {
System.out.print(" " + value);
}
}
}
你这段代有问题的: 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的。
每一步都做成了一个单独的方法来做,
所以稍显复杂,不过注释都写了。
完成
1.产生7个随机数
2.验证是否存在相同随机数
3.确定号码选择区域
4.排序
//package com.color.util;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class DoubleBall {
//用来保存产生的每注双色球号码
private Listint[] ballList;
//保存一注号码的数组
private int[] ball;
//红色球号码总和的开始区域
private int START;
//红色球号码总和的结束区域
private int END;
/**
* 构造方法
* @param number,产生号码的数量
*/
public DoubleBall(){
Scanner s = new Scanner(System.in);
System.out.println("===请输入产生随机号码数量===");
int number = s.nextInt();
this.init();
//完成ballList的初始化
ballList = new ArrayListint[]();
for(int i=0;inumber;i++){
//初始化ball
ball = new int[7];
//产生一注号码
ball = this.createBall(ball);
while(true){
int count = 0;
//将所有的号码去掉最后一个号码后相加,用来验证是否在指定的区域内
for(int j=0;jball.length-1;j++){
count += ball[j];
}
//如果产生的号码不在指定的区域内,重新产生号码
if(!(countSTART count END)){
ball = this.createBall(ball);
//否则,退出while,将ball添加到list之中
}else{
break;
}
}
ball = this.sort(ball);
//将这注产生的号码添加到list之中
ballList.add(ball);
}
}
/**
* 产生双色球的七个号码
* @param ball
* @return
*/
public int[] createBall(int[] ball){
for(int i=0;iball.length;i++){
//默认最后一个号码保留给蓝色球
if(iball.length-1){
//如果是红色球,则验证每个产生的号码是否已经存在。
ball = this.validateBall(ball,i);
}else{
//如果是蓝色球,直接产生1--16之间的随机数
ball[i] = (int) Math.round(Math.random()*15+1);
}
}
//产生号码完毕,返回这注产生的号码。
return ball;
}
/**
* 每次只产生一个红色号码,并验证此号码是否已经存在,
* 如果存在,重新产生号码,只到没有重复号码。
* @param ball
* @param index 产生红色球数组的下标,即第几个号码。
* @return
*/
public int[] validateBall(int[] ball,int index){
//产生一个1--33的随机数
int random = (int) Math.round(Math.random()*32+1);
while(true){
int i=0;
for(;iindex;i++){
//如果存在重复数字
if(random==ball[i]){
//重新产生号码
random = (int) Math.round(Math.random()*32+1);
//并且跳出for循环,进入while循环
i =index+1;
}
}
//如果验证完了所有号码,那把这个号码插入数组,并返回
if(i==index){
ball[index] = random;
return ball;
}
}
}
/**
* 显示产生的双色球号码
*
*/
public void displayBall(){
System.out.println("====产生号码的详细信息如下===");
for(int[] ball:ballList){
for(int i=0;iball.length;i++){
//如果号码不足两位数,在前面添加"0"显示。
System.out.print(((ball[i]10)?("0"+ball[i]):ball[i])+"\t");
}
System.out.println();
}
}
/**
* 完成初始化,制定双色球号码的
* 开始和结束区域
*
*/
public void init(){
Scanner s = new Scanner(System.in);
System.out.println("===请输入开始数字===");
this.START = s.nextInt();
System.out.println("===请输入结束数字===");
this.END = s.nextInt();
if(this.START=25 || this.END=150){
System.out.println("输入数字不合法,退出程序!");
System.exit(0);
}
}
/**
* 对号码进行排序,只对最后一个号码以前的
* 号码进行排序
* @param ball
* @return
*/
private int[] sort(int[] ball){
for(int i=0;iball.length-1;i++){
for(int j=0;jball.length-i-2;j++){
if(ball[j]ball[j+1]){
int t = ball[j];
ball[j] = ball[j+1];
ball[j+1] = t;
}
}
}
return ball;
}
public static void main(String[] args){
DoubleBall ball = new DoubleBall();
ball.displayBall();
}
}