写的很好:
- package test24;
- import java.util.Random;
- /**
- *
- * @author liyq 已知一个数组int[98],该数组里面存储了0~99共100个数字中的98个,
- * 数字不重复,请用算法算出0~99中缺少的2个数字是哪两个? 要求:数组自己用程序生成,数值介于0~99,相互之间不重复。
- * 上传代码的时候将运算结果截图一起提交
- *
- */
- public class Test24 {
- static int[] arr = new int[98]; // 存放整数数组
- public static void main(String[] args) {
- // 生成数组
- generateArray();
- // 打印数组
- printArray(arr);
- System.out.print("数组中缺失的数据是:");
- // 查找缺失的值
- find(arr);
- }
- /*
- * 该函数用来生成整数数组。 因为程序要求要缺失两个整数,所以程序中使用random类随机生成这两个缺失的值
- * 然后循环生成数组时,如果i==这两个值,则不往数组里存。
- */
- public static void generateArray() {
- /*
- * random类用于生成随机数,本程序中,用random类生成的两个随机数表示数组中缺失的两个数
- */
- Random rand = new Random();
- int index = 0;// 整数数组的索引
- /*
- * 生成两个介于0~100之间的随机数
- */
- int r1 = rand.nextInt(100);
- int r2 = rand.nextInt(100);
- for (int i = 0; i < 100; i++) {
- if (i == r1 || i == r2) {
- continue;
- } else {
- arr[index] = i;
- index++;
- }
- }
- }
- /*
- * 该函数用来查找数组中缺失的整数
- *
- * 编程思路是: 首先有0到99一百个数,用来查找数组中是否有自己。这是通过一个for循环完成的 在 程序中设置了一个存在标记exist =
- * false,默认每个元素都在数组中出现 然后在每次外层循环中,都遍历整个数组,来查找i这个值是否在数组中。
- * 如果有,则把存在标记置为true,结束本次查找,进行下一次循环查找。 如果没有,则打印i,意思是该值在数组中不存在。
- */
- public static void find(int[] arr) {
- for (int i = 0; i < 100; i++) {
- boolean exist = false;
- for (int j = 0; j < arr.length; j++) {
- if (i == arr[j]) {
- exist = true;
- break;
- }
- }
- if (exist == false) {
- System.out.print(i + " ");
- }
- }
- }
- /*
- * 该函数用来打印数组
- */
- public static void printArray(int[] arr) {
- System.out.println("生成的数组为:");
- for (int i = 0; i < arr.length; i++) {
- System.out.print(arr[i] + " ");
- if (i > 0 && i % 10 == 0) {
- System.out.println();
- }
- }
- System.out.println();
- }
- }
复制代码 |