1、递归方式求解
package base;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class MultiDimensionArrTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Input the length of the array:");
int len = sc.nextInt();
int[] arr = new int[len];
Random r = new Random();
for (int i = 0; i < arr.length; i++) {
arr[i] = r.nextInt(30) + 1;//左闭右开
correct(arr[i], arr, i);
}
System.out.println(Arrays.toString(arr));
}
public static void correct(int a, int[] b, int c) {
Random r = new Random();
for (int j = 0; j < c; j++) {
if (b[j] == b[c]) {
b[c] = r.nextInt(30) + 1;
correct(b[c], b, c);
}
}
}
}
2、非递归方式求解
package base;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class MultiDimensionArrTestExtra {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Input the length of the array: ");
int len = sc.nextInt();
int[] arr = new int[len];
Random r = new Random();
for (int i = 0; i < arr.length; i++) {
arr[i] = r.nextInt(30) + 1;//左闭右开
boolean flag = false;
while (true) {
for (int j = 0; j < i; j++) {
if (arr[i] == arr[j]) {
flag = true;
break;
}
}
if (flag) {
arr[i] = r.nextInt(30) + 1;
flag = false;
continue;
}
break;//能执行到这里说明flag的值没有被修改,即当前生成的随机数与之前的数都没有重复
}
}
System.out.println(Arrays.toString(arr));
}
}