麻烦大家看一下这道题: 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这道题的算法吧,我实在是想不出来了。在线等。希望高手答复。
2)随机赋值,使数组a中的每一个元素的值都在1~9之间,且不重复
3)假设数组a中的元素为2,4,6,8,10,11,13,15,17,将其随机赋给数组b这道题的算法吧,我实在是想不出来了。在线等。希望高手答复。
我没想出啥好办法。。
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));
}
}
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("============================");
}
}
}
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();
}
}
}
楼主要的是随机赋值的
把给定的数组随机排序的类
冰冻木马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]);
}
}