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数组的值是什么来判断是否是被选取到