您的位置:首页 > 编程语言 > Java开发

javase 双色球选7球 红球在【1-36】之间,选出6个,且不能重复 篮球在【1-16】之间,选出1个

2016-08-07 11:09 218 查看
本次双色球的难点在于,红球的选择,它是不能重复的,所以要经过遍历,将重复元素给剔除,不多说直接看代码吧(注释很详细了):

方法一:主要是用了集合的list.contain()的方法,判断是否有重复元素。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;

/**
*
* 双色球选7球
* 红球在【1-36】之间,选出6个,且不能重复
* 篮球在【1-16】之间,选出一个
*
* @author Administrator
*
*/
public class DoubleColorBall {

public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
Random random = new Random();
getReadBall(list, random);
getBlueBall(list, random);
System.out.println(Arrays.toString(list.toArray()));
}
/**
* 获得红色球
* @param list
* @param random
*/
public static void getReadBall(List<Integer> list,Random random){
for (int i = 0; i < 6; i++) {
int num = random.nextInt(36) + 1;
do{
num = random.nextInt(36) + 1;
}while(list.contains(num)); //如果集合中包含该值则重新复制
list.add(num);
}
}
/**
* 获得蓝色球
* @param list
* @param random
*/

public static void getBlueBall(List<Integer> list,Random random){
int num = random.nextInt(16)+1;
list.add(num);
}

}方法二:有个小技巧,就是i--;将for循环倒退一格,重新获取随机数(这个技能必须得get)
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;

public class DoubleColorBall2 {
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
Random random = new Random();
int num = 0;
boolean flag = true;// 判断是否重复的标志
int[] nums = {12,15,12,36,16,96,12};
int temp = 0;
// 红球逻辑实现
for (int i = 0; i < 6; i++) {
flag = true;
num = random.nextInt(36) + 1;
System.out.println("num = " + num + " ");
// 遍历,剔除重复元素
for (int j = 0; j < list.size(); j++) {
if (num == list.get(j)) {
i--; // 当有重复时--,使for循环倒退一格,重新获取随机数
flag = false;
break;
}
}
if (flag) { // 不重复则添加
list.add(num);
}
}
// 篮球实现
num = random.nextInt(16) + 1;
list.add(num);
System.out.println(Arrays.toString(list.toArray()));
}
}

结语:你只是看起来很努力!
              
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息