每一步都做成了一个单独的方法来做,
站在用户的角度思考问题,与客户深入沟通,找到柯坪网站设计与柯坪网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、成都做网站、外贸网站建设、企业官网、英文网站、手机端网站、网站推广、域名申请、雅安服务器托管、企业邮箱。业务覆盖柯坪地区。
所以稍显复杂,不过注释都写了。
完成
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();
}
}
你是要JAVA可视化的 还是控制台的啊?
控制台的话 你可以用循环来取中奖号,将其存入list或set里(最好是set,因为set本来就不会重复)。如果用list存就另外写一个循环方法,来挨个判定该元素是不是已经在list中存在了,如果存在,就让选号的再加选一次,如果不重复,就放到list里去。。。。OK
package suanFa;
import java.util.Random;
public class Shengchengsuijishu {
public static void main(String[] args) {
Random random = new Random(); // 随机数类
int number = random.nextInt(10); // 随机生成 0 - 9 的数字
int userNumber = 0; // 存储用户号码的变量
boolean sign = false; // 是否循环的标记
while (sign == false) { // 循环
userNumber = random.nextInt(1000); // 随机生成 0 - 999 的数字
sign = checkUserNum(userNumber , number); // 调用方法
}
}
/**
* 检查用户是否中奖
* @param userNumber 随机生成的用户号码
* @param number 开奖号码
* @return 返回是或否
*/
public static boolean checkUserNum(int userNumber , int number) {
boolean sign = false; // 是否中奖标记
int firstNum; // 声明一个变量记录百位
int nextNum; // 声明一个变量记录十位
String buff = new Integer(userNumber).toString(); // 把 用户号码转换成字符串
if (buff.length() == 3) { // 判断生成的用户号码是否 大于 100
firstNum = Integer.parseInt(buff.substring(0, 1)); // 截取百位
nextNum = Integer.parseInt(buff.substring(1, 2)); // 截取十位
if(firstNum - nextNum == number){ // 如果 百位减十位等于开奖号码,则中奖
System.out.println("开奖号码是:" + number);
System.out.println("中奖用户号码是:" + buff);
sign = true;
}
}
return sign; // 返回
}
☆这是产生0-9的随机数的方法:
public class Test{
public static void main(String[] args) {
Random random = new Random(); // 随机数类
int number = random.nextInt(10); // 随机生成 0 - 9 的数字
System.out.print(number);
}
}
自己写的,不懂可以问我
import java.util.Random;
import java.awt.*;
import java.awt.event.*;
public class shuangSeQiu implements ActionListener{
int i,k;
static int rm,rr;
int [] a = new int [33];
Frame f = new Frame("双色球随机数");
TextField tf = new TextField();
Random rd = new Random();
public shuangSeQiu()
{
for(i=0;i33;i++)
{
a[i] = i;
}
f.setLayout(new BorderLayout());
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public void init()
{
tf.addActionListener(this);
Button b = new Button("开始");
b.addActionListener(this);
f.add(tf,"North");
f.add(b);
f.setSize(300,300);
f.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand().equals("开始"))
//tf.setText(""+(rd.nextInt(33)+1)+" "+(rd.nextInt(33)+1)+" "+(rd.nextInt(33)+1)+" "+(rd.nextInt(33)+1)+" "+(rd.nextInt(33)+1)+" "+(rd.nextInt(33)+1)+" 蓝色球号码:"+(rd.nextInt(15)+1));
{
/*rr = new Random().nextInt(33);
rm = new Random().nextInt(33);*/
for(i=0;i33;i++)
{
rr = new Random().nextInt(33);
rm = new Random().nextInt(33);
System.out.print(rr+" ");
k=a[rm];
a[rm]=a[rr];
a[rr]=k;
}
tf.setText("红色球号码:"+(a[0]+1)+" "+(a[1]+1)+" "+(a[2]+1)+" "+(a[3]+1)+" "+(a[4]+1)+" "+(a[5]+1)+" 蓝色球号码:"+(rd.nextInt(15)+1));
}
}
public static void main(String[] args)//throws Exception
{
new shuangSeQiu().init();
}
}