题目描述:将一个1-100之间的数不重复的存在一个长度为[98]的数组里,找到没有存入的数字。(java实现)
package com.a;
/*
*将一个1-100之间的数不重复的存在一个长度为[98]的数组里,找到没有存入的数字。
*/
public class Demo5 {
public static void main(String[] args) {
//存放98个不重复的数字的数组arr1
int[] arr1 = new int[98];
//存储100个数中没存进长度是98数组的两个数
int[] arr2 = new int[2];
int n = 0;
//在1~100随机生成98个不重复的数字存入长度为98的数组里面
//调用了Math类的方法random()随机生成0.0~1.0之间的double类型的数字
for (int i = 0; i < 98; i++) {
arr1[i] = (int) ((Math.random() * 100) + 1);
for (int j = 0; j < i; j++) {
/*
*如果随机生成的元素在数组中存在,则数组下标减一返回到上一级重新生成一个随机数继续判断
*/
if (arr1[j] == arr1[i]) {
i--;
break;
}
}
}
/*
*将1~100个数字依次与长度是98的数组arr2中的98个数字进行比较,如果存在令flag == true,不存在的话flag仍然是false
* 即找到了没存进长度是98的数组的第一个数字。
*/
for (int k = 1; k <= 100; k++) {
//下面循环依次之后一定要重置flag!!!(易错)
boolean flag = false;
for (int m = 0; m < 98; m++) {
if (arr1[m] == k) {
flag = true;
}
}
if(flag == false) {
arr2[n] = k;
n++;
}
}
System.out.println("没有存入的两个数字是: " + arr2[0] + "和" + arr2[1]);
}
}