问题描述
- 大神们,我自己想写个 彩票生成器,但是这串代码生成的数字会存在‘0’请问下 是哪边有问题?
-
public class Lottery {
public static void main (String args[]){
Random r=new Random();
int[] b=new int[6];//红球
for(int i=0;i<6;i++){
int a=r.nextInt(33)+1;
if(!ishave(b,a)){
b[i]=a;
}
}
putOut(b);
}
public static boolean ishave(int[] b,int a){
for(int i=0;i<b.length;i++){
if(b[i]==a){
return true;
}
}
return false;
}
public static void putOut(int[] a){
StringBuffer sb =new StringBuffer();
for(int i=0;i<a.length-1;i++){
sb.append(a[i]+",");
}
sb.append(a.length-1);
System.out.println(sb);
}
}
解决方案
程序有两个错误
if(!ishave(b,a)){
b[i]=a;
}
如果重复,必须再次生成,否则这个元素没有赋值,当然是0
解决方案二:
sb.append(a.length-1);
应该是
sb.append(a[a.length-1]);
解决方案三:
if (!ishave(b, a))
{
b[i] = a;
}
else
{
i = i - 1;
}
解决方案四:
楼上正解,楼主没有判断随机数重复的情况
解决方案五:
你可以定义一个和数组长度一样的boolean的数组,到时候看这个boolean数组的值是什么来判断是否是被选取到
时间: 2024-11-08 21:23:20