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()));
}
}
结语:你只是看起来很努力!
方法一:主要是用了集合的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()));
}
}
结语:你只是看起来很努力!
相关文章推荐
- C#实现简单的双色球抽取中奖号码代码
- JavaScript生成福利彩票双色球号码
- 两种JAVA实现短网址服务算法
- Java经典算法汇总之冒泡排序
- java算法实现预测双色球中奖号码
- java算法50个人围成一圈数到三和三的倍数时出圈,问剩下的人是谁?在原来的位置是多少?
- 转自CSDN----"双色球随机摇号"
- 一段可能价值几百万的代码
- JAVA编程练习:兔子问题
- JAVA练习:查找素数问题
- ”水仙花数“问题 Narcissistic Number
- 分解质因数问题
- 求s=a+aa+aaa+aaaa+aa...a的值
- 球下落回弹
- 数字组合问题
- 利润提成问题
- 完全平方数问题
- 计算日期天数
- 数字排序
- 99乘法表