一、题目描述
创建一个长度为6的int型数组,要求数组的元素的值在 1 - 30之间,且都是随机赋值,同时要求各个元素的值不相同。
二、解题思路
定义一个变量num来临时保存生成的随机数,然后将num和已经存入数组的元素进行比对,如果没有相同的元素则将num存入数组,否则更新num的值,并重新进行比对。
三、代码示例
package com.easy.java;
/**
* @ClassName Test04
* @Description 创建一个长度为6的int型数组,要求数组的元素的值在 1 - 30之间,且都是随机赋值,同时要求各个元素的值不相同。
* @Author wk
* @Date 2021/11/13 23:38
* @Version 1.0
*/
public class Test04 {
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
check(test());
}
}
// 生成元素不重复的数组
public static int[] test() {
//初始化数组
int demo[] = new int[6];
//数组赋值
boolean flag = true;
for (int i = 0; i < demo.length; i++) {
int num = (int) (Math.random() * (30 - 1 + 1) + 1);
for (int j = 0; j <= i; j++) {
if (num == demo[j]) {
flag = false;
num = (int) (Math.random() * (30 - 1 + 1) + 1);
j = -1;
} else {
flag = true;
}
}
if (flag) {
demo[i] = num;
}
}
return demo;
}
// 检查生成的数组是否有重复的元素
public static void check(int demo[]) {
for (int i = 0; i < demo.length; i++) {
System.out.print(demo[i] + " ");
}
int count = 0; // 用来记录重复元素的对数
for (int i = 0; i < demo.length; i++) {
for (int j = i + 1; j < demo.length; j++) {
if (demo[i] == demo[j]) {
count++;
System.out.println("有重复的元素,下标分别为:" + i + " " + j);
} else {
continue;
}
}
}
System.out.println("相同元素的对数为:" + count);
}
}
四、测评结果
这里给出了100组输出结果,以防止出现误差。
备注:这里用到的检查数组是否有重复元素的方法可以去看我的上一篇文章:检查数组是否有重复元素