public class Exec {
public static void main(String[] args) {
// 定义数组维度的大小
final int number = 4;
// 利用RandomArray类生成具有不重复随机数的数组
RandomArray ra = new RandomArray(number);
// 循环显示数组元素
for (int i = 0; i < number; i++) {
for (int j = 0; j < number; j++) {
System.out.print(ra.getArray()[i][j] + "\t");
}
System.out.println();
}
}
}
// 该类生成具有不重复随机数的数组
class RandomArray {
// 保存随机数的数组
private int[][] array;
// 设置数组的维度大小
private int size;
// 数组的读取函数
public int[][] getArray() {
return array;
}
// 该构造函数对数组维度大小进行初始化,并生成随机数组
public RandomArray(int size) {
setSize(size);
array = new int[size][size];
generateRandomArray();
}
// 数组维度大小的设置函数
public void setSize(int size) {
this.size = size;
}
// 生成具有不重复随机数的数组
public void generateRandomArray() {
// 临时随机数变量
int randomNumber;
// 判断是否重复的标记变量
boolean isRepeated;
// 循环所有的数组元素
for (int x = 0; x < size; x++)
for (int y = 0; y < size; y++) {
// 生成1到size*size间的一个随机整数
randomNumber = (int) (Math.random() * size * size) + 1;
// 检查该随机数是否重复
isRepeated = false;
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
if (randomNumber == array[i][j]) {
isRepeated = true;
break;
}
}
}
// 如果没有重复,则给相应的数组元素赋值,否则重置当前数组元素下标,留待下次循环再次设置随机数
if (!isRepeated) {
array[x][y] = randomNumber;
} else {
y--;
}
}
}
}
[此贴子已经被作者于2010-12-12 08:27:35编辑过]