人之所以痛苦,那是因为你在成长。--------magic_guo
难点:判断数组内各个元素的不同;
解决:每一次赋值,都与前边的每一个数相比较,如果有相同的,则重新赋值,再进行比较,直到没有相同的数,再进行下一个位置的赋值。
代码:
// 给定一个长度为6的int型数组,要求数组的每个元素都在0~30之内,且数组内的每个元素都不同
public class ArrayTest02 {
public static void main(String[] args) {
method2();
}
public static void method1(){
// 1.初始化数组
int[] arr = new int[6];
// 2.给数组内的元素赋值
for (int i = 0; i < arr.length; i++) {
// 2.1 创建30以内的随机数并赋值
arr[i] = (int)(Math.random()*30 + 1);
// 2.2 每次赋完值,都跟前边的每个元素嘴比较,如果有相同的,则重新赋此位置的值
for (int j = 0; j < i; j++) {
if (arr[i] == arr[j]){
i--; // 保持此位置不变,一直在赋值
break;
}
}
}
// 3.遍历数组
for (int i : arr) {
System.out.print(i + " ");
}
}
public static void method2(){
int[] arr = new int[6];
for (int i = 0; i < arr.length; i++) {
arr[i] = (int)(Math.random()*10+1);
boolean isFlag = false;
// 在此次循环中,解决此位置的赋值冲突问题,直到没有冲突,跳出while循环
while (true){
for (int j = 0; j < i; j++) {
if (arr[i] == arr[j]){
isFlag = true;
break;
}
}
if (isFlag){
arr[i] = (int)(Math.random()*10+1);
isFlag = false;
continue;
}
break;
}
}
for (int i : arr) {
System.out.print(i + " ");
}
}
}