java定义一个数组,长度为98,每个元素随机赋值为1~100的整数,每个元素不能重复,求1~100中哪两个值没有被赋值,并输出
时间: 2023-09-14 21:05:50 浏览: 102
以下是Java代码实现:
```java
public class Main {
public static void main(String[] args) {
int[] arr = new int[98];
boolean[] flag = new boolean[100];
// 初始化标志数组
for (int i = 0; i < flag.length; i++) {
flag[i] = false;
}
// 随机赋值
for (int i = 0; i < arr.length; i++) {
int num = (int) (Math.random() * 100) + 1;
if (!flag[num - 1]) { // 判断该数是否已经赋值
arr[i] = num;
flag[num - 1] = true;
} else {
i--; // 如果已经赋值,则重新赋值
}
}
// 查找未赋值的数
int miss1 = -1, miss2 = -1;
for (int i = 0; i < flag.length; i++) {
if (!flag[i]) {
if (miss1 == -1) {
miss1 = i + 1;
} else {
miss2 = i + 1;
break;
}
}
}
// 输出结果
System.out.println("缺失的数为:" + miss1 + " 和 " + miss2);
}
}
```
首先定义一个长度为98的数组,用于存储随机生成的数,同时定义一个长度为100的布尔型数组,用于标记1~100中已经赋值的数。然后,先将标志数组初始化为false,表示所有的数都没有被赋值。
接着,通过循环生成随机数,并判断该数是否已经赋值。如果未赋值,则将该数赋值给数组,并将标志数组对应位置的值设为true;如果已经赋值,则重新生成随机数。这样可以保证每个元素的值都是不重复的。
最后,再遍历标志数组,查找未被赋值的数,即为缺失的数。
运行程序,会输出缺失的数。
阅读全文