java基础知识应用--双色球开奖号码

  双色球是中国福利彩票的玩法,双色球分为红色球号码区和蓝色球号码区,红色球号码区由1-33共33个号码组成,蓝色球号码区由1-16共16个号码组成,开奖号码由6个不重复的红色球号码和1个蓝色球号码共7个数组成。

  首先要设置三个数组来分别保存所有球的号码、抽取红球的号码和标记抽取球的号码,然后抽取不重复的随机的6个红色球号码和1个蓝色球号码,最后给红色球排序与蓝色球一起输出。需要注意的是号码是01-33,因此1-9的值要补“0”。

import java.util.Arrays;

import java.util.Random;

public class Test01 {

/**

*双色球:共有7个数字

*红球:6个  每个都不重复,数的范围在1~33

*蓝球:1个范围1~16

*/

publicstatic void main(String[] args) {

Randomr=new Random();

//1、定义球池:

Stringballs[]=new String[33];

for(int i = 0; i < balls.length; i++) {

if(i+1<10){

balls[i]="0"+(i+1);//1~9前面补零

}else{

balls[i]=""+(i+1);

}

}

System.out.println(Arrays.toString(balls));

//定义存放红球的数组,还有存放蓝球的变量

Stringred[] =new String [6];

Stringblue;

//定义一个布尔值数组,用来标记红球中的球是否已经被抽取过,false表示未被抽中

boolean[] flags=new boolean[33];

for(int i = 0; i < flags.length; i++) {

flags[i]=false;

}

//抽取红球

intindex;//红球下标变量

for(int i = 0; i < red.length; i++) {

do{

index=r.nextInt(33);//index=3 抽取了04号球

}while(flags[index]);

red[i]=balls[index];

flags[index]=true;//改标记:如果对应的数被抽中就做标记

}

Arrays.sort(red);

//抽取蓝球

blue=balls[r.nextInt(16)];

//输出抽奖号码

System.out.print("本期开奖号码:");

for(int i = 0; i < red.length; i++) {

System.out.print(red[i]+"");

}

//数组的复制-Arrays.copyof(原数组,新数组长度);

StringdoubleBalls[]=Arrays.copyOf(red,red.length+1);

doubleBalls[doubleBalls.length-1]=blue;

System.out.println("本期开奖号码:"+Arrays.toString(doubleBalls));

}

}

时间: 2024-11-10 06:21:00

java基础知识应用--双色球开奖号码的相关文章

数组以及模拟双色球开奖

双色球开奖主要是数组的赋值以及电脑随机数的产生 模拟双色球开奖: int money=0; int [] cho=new int[6];//红球 int[] last=new int[7];//最后选球结果 int ch=0;//篮球 String a="机选"; String b="自选"; Scanner in=new Scanner(System.in); System.out.println("请输入选择方式,机选或者自选"); Stri

第1天:了解Java基础知识

Java的优势 1. 简单 不像C或者C++语言,Java中省去了对指针的操作.但是,Java中并没有省去指针,代替指针的是一种新的变量--引用,引用也是保存一个对象的内存地址. 2.方便 Java虚拟机自带垃圾回收器,能够自动回收内存资源.而C和C++语言,需要开发人员手动进行内存资源回收. 3.安全 不支持指针操作 4.平台无关性 Java语言是跨平台的,一次编译,到处运行. 而且,不同平台,C语言中数据类型所占的位数是不同的,而Java语言中,数据类型所占的位数是固定的. 5.面向对象 J

Java基础知识的三十个经典问答

Java基础知识的三十个经典问答 1.面向对象的特点 抽象: 抽象是或略一个主题中与当前目标的无关的因素,一边充分考虑有关的内容.抽象并不能解决目标中所有的问题,只能选择其中的一部分,忽略其他的部分.抽象包含两个方面:一是过程抽象:一是数据抽象. 继承 继承是一种联接类的层次模型,允许和鼓励类的重用,提供了一种明确的共性的方法.对象的一个新类可以从现有的类中派生,这叫做类的继承.心累继承了原始类 的特性,新类称为原始类的派生类或者是子类,原始类称为新类的基类或者父类.子类可以从父类那里继承父类的

java基础知识回顾之java Thread类学习(三)--java线程实现常见的两种方式实现好处:

总结:实现Runnable接口比继承Thread类更有优势: 1.因为java只能单继承,实现Runnable接口可以避免单继承的局限性 2.继承Thread类,多个线程不能处理或者共享同一个资源,但是实现Runnable接口可以处理同一个资源. 下面我们做个测试:验证下.车站的售票系统售票的例子,车站的各个售票口相当于各个线程,我们先使用第一种方法几继承Thread类的方式实现: 代码如下: package com.lp.ecjtu.Thread; /** * * @author Admini

java基础知识回顾之java Thread类学习(八)--java多线程通信等待唤醒机制经典应用(生产者消费者)

 *java多线程--等待唤醒机制:经典的体现"生产者和消费者模型 *对于此模型,应该明确以下几点: *1.生产者仅仅在仓库未满的时候生产,仓库满了则停止生产. *2.消费者仅仅在有产品的时候才能消费,仓空则等待. *3.当消费者发现仓储没有产品可消费的时候,会唤醒等待生产者生产. *4.生产者在生产出可以消费的产品的时候,应该通知等待的消费者去消费. 下面先介绍个简单的生产者消费者例子:本例只适用于两个线程,一个线程生产,一个线程负责消费. 生产一个资源,就得消费一个资源. 代码如下: pub

java基础知识回顾之java Thread类学习(七)--java多线程通信等待唤醒机制(wait和notify,notifyAll)

1.wait和notify,notifyAll: wait和notify,notifyAll是Object类方法,因为等待和唤醒必须是同一个锁,不可以对不同锁中的线程进行唤醒,而锁可以是任意对象,所以可以被任意对象调用的方法,定义在Object基类中. wait()方法:对此对象调用wait方法导致本线程放弃对象锁,让线程处于冻结状态,进入等待线程的线程池当中.wait是指已经进入同步锁的线程,让自己暂时让出同步锁,以便使其他正在等待此锁的线程可以进入同步锁并运行,只有其它线程调用notify方

java基础知识回顾之java Thread类学习(六)--java多线程同步函数用的锁

1.验证同步函数使用的锁----普通方法使用的锁 思路:创建两个线程,同时操作同一个资源,还是用卖票的例子来验证.创建好两个线程t1,t2,t1线程走同步代码块操作tickets,t2,线程走同步函数封装的代码操作tickets,同步代码块中的锁我们可以指定.假设我们事先不知道同步函数用的是什么锁:如果在同步代码块中指定的某个锁(测试)和同步函数用的锁相同,就不会出现线程安全问题,如果锁不相同,就会发生线程安全问题. 看下面的代码:t1线程用的同步锁是obj,t2线程在操作同步函数的资源,假设不

JAVA基础知识-java文化基础和运行环境

JAVA基础知识 1,java是95年sun公司推出的开发语言,发展很快,09年被oracle公司收购.至今分为SE.ME.EE三个发展方向和软件版本. 2,运行java的环境主要是通过JVM(java virtual machine)实现的.首先编写.java结尾的源文件,通过编译器编译成.class结尾的字节码文件,然后通过解释器实现在不同平台上一致运行的效果. 3,jvm,jre和jdk的区别:jvm,java虚拟机:jre,java运行环境,jdk:java开发工具包. 4,jdk的下载

java基础知识回顾之javaIO类--管道流PipedOutputStream和PipedIutputStream

管道流(线程通信流):管道流的主要作用是可以进行两个线程间的通讯,分为管道输出流(PipedOutputStream).管道输入流(PipedInputStream),如果想要进行管道输出,则必须要把输出流连在输入流之上.如图所示: 1.管道输入流应该连接到管道输出流 ,输入流和输出流可以直接连接       2.使用多线程操作,结合线程进行操作.通常由某个线程从管道输入流中(PipedInputStream)对象读取.          并由其他线程将其写入到相应的端到输出流中.不能使用单线程