import java.util.Random;
public class Caipiao{
public static void main(String[] args) {
int[] arr=new int[7];
boolean b=true;
Random r=new Random();

for(;;){
test1:for(int i=0;i<arr.length;i++){
int x=r.nextInt(33)+1;
arr[i]=x;
}
test2:for(int i=0;i<6;i++){
for(int j=i+1;j<7;j++){
if(arr[i]==arr[j]) 
b=false;
break test2;
}
}
if(!b){continue test1;}
else{
for(int i=0;i<7;i++){
System.out.print(arr[i]+" ");}
}
}
}  
}
编译老是报错,希望高手指点一下

解决方案 »

  1.   

    test1:去掉,把continue test1;改成continue;
      

  2.   

    import java.util.ArrayList;
    import java.util.List;
    import java.util.Random;public class Caipiao {
    public static void main(String[] args) {
    List<Integer> t = new ArrayList<Integer>();
    Random r = new Random();
    while (t.size() < 7) {
    int x = r.nextInt(33) + 1;
    if (!t.contains(x)) {
    t.add(x);
    }
    }
    for (int i = 0; i < t.size(); i++) {
    System.out.print(t.get(i) + " ");
    }
    }
    }
      

  3.   


    import java.util.ArrayList;
    import java.util.List;
    import java.util.Random;public class Caipiao {
    public static void main(String[] args) {
    List<Integer> t = new ArrayList<Integer>();
    Random r = new Random();
    while (t.size() < 7) {
    int x = r.nextInt(33) + 1;
    if (!t.contains(x)) {
    t.add(x);
    }
    }
    for (int i = 0; i < t.size(); i++) {
    System.out.print(t.get(i) + " ");
    }
    }
    }
      

  4.   

    package BBS;import java.util.Random;public class Caipiao {
    public static void main(String[] args) {
    int[] arr = new int[7];
    Random r = new Random();
            boolean[] flag = new boolean[33];
            int n =0;
            while(!(n==7)){
             int m = r.nextInt(33);
             if(flag[m]==true){
             continue;
             }
             flag[m]=true;
             arr[n]=m;
             n++;
            }
            for (int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);
    }
    }
    }
     
      

  5.   

    为什么不用洗牌的方法
    先把源数组设置为1-33,然后遍历数组
    对每一项随机获取一个下标,交换这两项的值。
    最后输出前7项即可。
    import java.util.Arrays;
    import java.util.Random;public class Test { public static void main(String[] args) {
    int nums[] = new int[33];
    for(int i = 0;i < nums.length;i++){
    nums[i] = i + 1;
    }
    //洗牌
    Random r = new Random();
    for(int i = 0;i < nums.length;i++){
    int index = r.nextInt(33);
    int temp = nums[index];
    nums[index] = nums[i];
    nums[i] = temp;
    }
    //取前7个
    int[] result = new int[7];
    System.arraycopy(nums, 0, result, 0, result.length);
    System.out.println("彩票号码 :" + Arrays.toString(result));
    }}