麻烦大家看一下这道题: 3、有一维数组int a[]=new int [9] ,二维数组int b[][]=new int[3][3],按顺序完成如下要求
2)随机赋值,使数组a中的每一个元素的值都在1~9之间,且不重复
3)假设数组a中的元素为2,4,6,8,10,11,13,15,17,将其随机赋给数组b这道题的算法吧,我实在是想不出来了。在线等。希望高手答复。

解决方案 »

  1.   

    2.
    我没想出啥好办法。。 
    import java.util.HashSet;
    import java.util.Iterator;
    import java.util.Random;
    import java.util.Arrays;public class test {
    public static void main(String[] args) {
    int i = 0;
    int[] arr = new int[9];
    HashSet<Integer> set = new HashSet<Integer>();
    Random ran = new Random();
    for (;i<9;i++) {
    int value = ran.nextInt(9)+1;
    set.add(value);
    }  i = 9 - set.size();
     while (i>0) {
     int value = ran.nextInt(9) +1;
     set.add(value);
     i = 9-set.size();
     }
     
     i = 0;
     Iterator it = set.iterator();
     while (it.hasNext()) {
     arr[i] = ((Integer)it.next()).intValue();
     i ++;
     }
     
     System.out.println(Arrays.toString(arr));
     
    }
    }
      

  2.   

    3.
    import java.util.HashSet;
    import java.util.Iterator;
    import java.util.Random;public class test {
    public static void main(String[] args) {
    int i = 0;
    int[] arr = {2,4,6,8,10,11,13,15,17};
    int[][] b = new int[3][3];

    HashSet<Integer> set = new HashSet<Integer>();
    Random ran = new Random();
    for (;i<8;i++) {
    int value = ran.nextInt(9);
    set.add(value);
    }  i = 8 - set.size();
     while (i>0) {
     int value = ran.nextInt(9);
     set.add(value);
     i = 9-set.size();
     }
     
     Iterator it = set.iterator();
     for (i=0;i<b.length;i++) {
     for (int k = 0;k<b[i].length;k++) {
     b[i][k] = arr[((Integer)it.next()).intValue()];
     }
     }
     
     for (int[] v:b) {
     for (int c:v) {
     System.out.print(c+"\t");
     }
     
     System.out.println();
     System.out.println("============================");
     }
     
    }
    }
      

  3.   

    import   java.util.*; 
    public   class   Test5 

            
            public   static   void   main(String[]   args) 
            { 
                    Set <Integer>   mySet   =   new   LinkedHashSet <Integer> (); 
                    int a[]=new   int   [9] ;
                    while(mySet.size() <9) 
                    { 
                            mySet.add((int)(Math.random()*9+1)); 
                    } 
                    for(Integer  i:mySet) 
                    {
                     int j=0;
                     a[j]=i; 
                     System.out.print(a[j]+"   "); 
                     j++;
                    } 
            } 
    }public   class   Test5 

            
            public   static   void   main(String[]   args) 
            { 
             int k=0;
             int i=0;
             int j=0;
                    int a[]={2,4,6,8,10,11,13,15,17} ;
                    int b[][]=new int[3][3];
                    
                    for(i=0;i<3;i++){
                     for(j=0;j<3;j++){
    b[i][j]=a[k];
                     k++;
                     System.out.printf("%-3d",b[i][j]);
                     }
                     System.out.println();
                    }
            } 
    }
      

  4.   

    cursor_wang 
    楼主要的是随机赋值的
      

  5.   

     /* 
     把给定的数组随机排序的类 
       冰冻木马QQ57629776 Email:[email protected] 2007年12月
    */
    public class ArraryToRand
    {
    int [] toRandArrary;
    ArraryToRand(final int arrary[]) //会引起原来数组的更新
    {
    int temp=0,j;
    toRandArrary=arrary; for(int k=0;k<5;k++) //交换5次目的是使数组变得更加乱,也可删除或更改此句中的数字
    for(int i=0;i<arrary.length;i++) //随机交换数组元素,使数组随机排序;
    {
    j=(int)(Math.random()*toRandArrary.length);
    temp=toRandArrary[i];
    toRandArrary[i]=toRandArrary[j];
    toRandArrary[j]=temp;
    }
    }
    /*
    供程序测试用
    */
        //以下是1-108的有序数,经过以上类下将成为无序数
    public static void main(String [] args)
    {
    int [] a=new int[108]; //模拟108张扑克牌
    for(int i=0;i<a.length;i++)
    a[i]=i+1;
    ArraryToRand myarrary=new ArraryToRand(a);
    for(int i=0;i<a.length;i++)
    System.out.println(a[i]);
    }
    }