思路: 1.定义数组
2.给数组赋值 (难点)
3.输出数组
package com.day_07.exer;
import java.util.Random;
import java.util.Scanner;
//random_[i] = rand.nextInt(max - min + 1) + min;
class Random_{
public static void main(String[] args) {
Random rand = new Random();
Scanner scan = new Scanner(System.in);
System.out.print("请输入随机数组的大小:");
int num = scan.nextInt();
System.out.println("");
System.out.println("请输入数组中数值的范围:");
System.out.print("最大值:");
int max = scan.nextInt();
System.out.println("");
System.out.println("最小值:");
int min = scan.nextInt();
System.out.println("");
int[] Random_num = new int[num];//定义数组
boolean isFlag = true;
Random_num[0] = rand.nextInt(max - min + 1) + min;
for(int i = 1;i < Random_num.length;i++) {//遍历数组
isFlag = true;
table: while(isFlag) {
Random_num[i] = rand.nextInt(max - min + 1) + min;//给Random[i]随机赋值
for(int j = 0;j < i;j++) { //判断Random[i]是否满足不与其前任一元素相同
if(Random_num[i] == Random_num[j]){
continue table; //如出现相同,返回赋值语句
}
if(j == i - 1) { //判断是否对比完全
isFlag = false; //对比完全,跳出循环
}
}
}
}
for(int i = 0;i < Random_num.length;i++) {//输出随机数组
System.out.println(Random_num[i]+"\t");
}
}
}
主要难点在如何赋值
这里我赋值的方法是:
①:数组第一个先赋一个随机值
②:从下标为1开始遍历数组,对于每个遍历到的值Random_[i],用一个无限循环while(isFlag){}找出满足Random_[i]不与
for(int j = 0;j < i;j++) {
//if(temp == Random_num[j])
if(Random_num[i] == Random_num[j]){
continue table;
}
if(j == i - 1) {
isFlag = false;
//Random_num[i] = temp;
}
}
这个遍历到 Random_[i]前任何一个Random[j]不同,如果有相同的,利用lable:while 与 continue
返回到给Random_[i]随机赋值的那个语句(即重新开始一次while循环)。
遍历完全,利用isFlag跳出while循环