日期:2014-05-20 浏览次数:20933 次
package josephus.game;
import java.util.*;
import java.io.*;
public class Radom {
public static void main(String[] args)throws Exception{
Set<Integer> ns = new TreeSet<Integer>();//先new一个set集合,保存随机生成的Integer对象
Random a=new Random();//用random方法实现随机选号
OutputStream os=new FileOutputStream("ball.dat",true);//要将每次生成的随机号码放入数据文件
ObjectOutputStream out=new ObjectOutputStream(os);//new一个对象流
System.out.print("红球"+" ");
//实现随机选6个红球
while(true){
ns.add(a.nextInt(34));
if(ns.size()==6) break;//问题在这里:怎么实现 “先随机生成6个数,然后依次判断每个元素是否为0,若所有元素值不为0,跳出while循环”这个方法?
}
System.out.print(ns+" ");//将红球打印出来
//实现随机选1个蓝球
Random b=new Random();
System.out.print("蓝球"+" ");
while(true){
if(b.nextInt(17)!==0) break;
}
System.out.println(b.nextInt(17));
out.writeObject(ns);
out.close();
}
}
for(Integer element:ns){
System.out.println(element);
System.out.println(element==0);
//if(element==0)break;
}
while(true){
ns.add(a.nextInt(34));
if(ns.size()>=6&&!ns.contains(Integer(0)) ) break; }
------解决方案--------------------
while(true){
if(b.nextInt(17)!==0) break;
}
System.out.println(b.nextInt(17));
楼主这个地方抽了两次蓝球阿
而且红色的部分写法不对哦
------解决方案--------------------
自己写了一个抽奖方法,仅供参考
import java.util.Hashtable;
import java.util.Random;
import java.util.TreeSet;
public class TestRandom1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Hashtable result = getRandom(6,1,34,17);
System.out.println("no1 is:"+result.get("no1").toString());
System.out.println("no2 is:"+result.get("no2").toString());
}
//参数part1->要抽出第一部分的个数,也就是抽的6个红球
//参数part1->要抽出第二部分的个数,也就是抽的1个蓝球
//参数arrange1->红球的抽取范围
//参数arrange2->蓝球的抽取范围
static Hashtable getRandom(int part1,int part2,int arrange1,int arrange2){
Hashtable<String ,TreeSet> result = new Hashtable<String,TreeSet>();
Random r = new Random();
TreeSet<Integer> no1 = new TreeSet<Integer>();
while(no1.size()<part1){
int temp = r.nextInt(arrange1);
if(temp!=0){
no1.add(temp);
}
}
TreeSet<Integer> no2 = new TreeSet<Integer>();
while(no2.size()<part2){
int temp = r.nextInt(arrange2);
if(temp!=0){
no2.add(temp);
}
}
result.put("no1", no1);
result.put("no2", no2);
return result;
}
}