大神们,我自己想写个 彩票生成器,但是这串代码生成的数字会存在‘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);
}
}

sb.append(a.length-1);
应该是
sb.append(a[a.length-1]);

程序有两个错误
if(!ishave(b,a)){
b[i]=a;
}
如果重复,必须再次生成,否则这个元素没有赋值,当然是0

              if (!ishave(b, a))
             {
                 b[i] = a;
             }
             else
             {
                 i = i - 1;
             }

楼上正解,楼主没有判断随机数重复的情况

你可以定义一个和数组长度一样的boolean的数组,到时候看这个boolean数组的值是什么来判断是否是被选取到