public class TestRandomArray {
public static void main(String[] args) {

int arr[]=new int[6];//选取多少人
String test2[]={"111","222","333"};
String test[]={"111","222","333","444","555","666","777","888","999"};
       for(int i=0;i<6;i++){
        arr[i]=(int) (Math.random()*8+1);
        for(int j=0;j<i;j++){
        if (arr[j] == arr[i])  
               {  
                   i--;  
                   break;  
               }  
        }
       }
       for(int i=0;i<6;i++){
        System.out.println(arr[i]);
        System.out.println(test[arr[i]]);
       }
}
}
这是我写的代码,用于随机输出test数组里面的数,现在的问题是我想在test2[]选取一个随机的数,但在test[]中排除test2[]中所选取的随机数,该怎么实现啊

解决方案 »

  1.   

    设置一个标记位,
    默认值为false
    在test2[]中标记位true,进行下一个判断,在test[]中标记为false
    循环结束,如果为true就保存
      

  2.   


    public class Test3 {
    public static void main(String[] args) {
    //取出的数
    String str;
    String test[]={"111","222","333","444","555","666","777","888","999"};
    String test2[]={"111","222","333"};
    int flag=0;
    while(true){
    if(!(str=exist(test, test2)).equals("")&&flag<6){
    System.out.println(str);
    flag++;
    }

    }

    }
    //判断一个字符是否在数组一中,但不在数组二中
    public static String exist(String[] test,String[] test2){
    int num=(int)(Math.random()*test.length);
    String str=test[num];
    for(String s:test2){
    if(s.equals(str))
    return "";
    }
    return str;
    }
    }
    真没什么难度。。
    做程序的,多练练逻辑能力吧,这个很重要。
      

  3.   

    稍微改了一点,上面的还是有点缺陷package test;public class Test3 {
    public static void main(String[] args) {
    //取出的数
    String str;
    String test[]={"111","222","333","444","555","666","777","888","999"};
    String test2[]={"111","222","333"};
    int flag=0;
    while(true){
    if(!(str=exist(test, test2)).equals("")){
    System.out.println(str);
    flag++;
    if(flag==6){
    break;
    }
    }

    }

    }
    //判断一个字符是否在数组一中,但不在数组二中
    public static String exist(String[] test,String[] test2){
    int num=(int)(Math.random()*test.length);
    String str=test[num];
    for(String s:test2){
    if(s.equals(str))
    return "";
    }
    return str;
    }
    }
      

  4.   

    谢谢你啊,我java是学的不好,以后得好好的学了。我运行了你程序,是可以运行的,但是有一个问题:并不是将test2里面的数组都排除,我想实现这样的结果,在test2数组中随机选取一个数(比如“111”),在test数组中选取不包括“111”的5个不重复随机数,(总共选6个)
      

  5.   

    那不是我的代码的问题,是我想实现的功能和你说的就不一样,理解错意思。
    //装那六个数的集合list
    List<String> list=new ArrayList<String>();
    String str="";//一开始的随机数,从test2中取出的那个
    for(int i=0;i<6;i++){
    for(String s:test){
    if(s.equals("str")){
    break;
    }else{
    list.add(s);
    s="";
    }
    }
    }
    裸写的,没调试,自己调试吧。这个要求逻辑更简单