有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在数组中查找缺少的元素

我的程序是:在一个数组中,存储1-10个数字,缺少一个数字,你怎么找到它

我尝试了下面的代码,但没有给出正确的输出

public class MissingNumber {

    public static void main(String[] args) {

        int arr[] = { 1, 2, 3, 4, 5, 6, 7, 9, 9, 10 };
        System.out.println(arr.length);

        int arr2[] = new int[10];

        for (int i = 0; i < arr2.length; i++) {

            arr2[i] = i + 1;
            System.out.println("second array is : " + arr2[i]);
        }

        //compare two arrays i.e arr and arr2

        for(int a=0;a<arr.length;a++){
            for(int b=0;b<arr2.length;b++){
                 if(arr[a]==arr2[b]){
                     break;
                 }
                 else{
                     System.out.println("missing element is : "+arr[a]);
                 }

            }
        }

    }

}

我要丢失的号码。谁能告诉我哪里出了问题吗


共 (6) 个答案

  1. # 1 楼答案

    删除第二个数组,您不需要它,并且在向原始数组添加元素后可能会导致错误

    基本上,将测试替换为:

    if(arr[a] != (a+1)){ System.out.println("Missing element: " + (a+1)); }
    

    不要打断它,因为可能缺少更多元素

  2. # 2 楼答案

    检查下面的代码,查看输入数组是否为任意顺序或随机排列

    公共类丢失编号{

    public static void main(String[] args) {
    
        int arr[] = {1, 2, 3, 4, 5, 6, 7, 9, 9, 10};
        System.out.println(arr.length);
    
        int arr2[] = new int[10];
    
        for (int i = 0; i < arr2.length; i++) {
            arr2[i] = i + 1;
        }
        for (int a = 0; a < arr2.length; a++) {
            int count = 0;
            for (int b = 0; b < arr.length; b++) {
                if (arr2[a] == arr[b]) {
                    break;
                } else {
                    count++;
                }
            }
            if (arr2.length == count) {
                System.out.println("missing element is : " + arr2[a]);
            }
        }
    
    }
    

    }

  3. # 3 楼答案

    一旦两个阵列匹配,就可以从循环中跳出。从逻辑的角度,将其更改为(不需要嵌套循环):

    if(arr[a]!=arr2[a]){
        System.out.println("missing element is : "+arr[a]);
        break;
    }
    

    但如果确定数组从1开始总是按顺序排列,则不需要另一个数组。就像这样做:

    for(int x=0; x<arr.lengthl x++){
        if(arr[x] != (x+1)){
            System.out.println("Missing element is " + (x+1));
            break;
        }
    }
    
  4. # 4 楼答案

    它不起作用,因为您正在arr中循环寻找任何不在arr2中的值,arr中的每个元素都在arr2中。您希望arr2作为外部循环

  5. # 5 楼答案

    My program is : In an array 1-10 numbers are stored, one number is missing how do you find it?

    也可以仅使用阵列本身来完成。请注意,只有当本问题中指定的一个数字缺失时,它才有效

    比如

    设数组为array = {1,2,3,4,5,6,7,9,9,10}

    现在,让我们假设数组并不总是被排序的,因此第一步是对数组进行排序

    Arrays.sort(array);
    

    下一步是简单地检查数组在任何给定位置的值,如果value != location + 1,那么这就是缺少的数字

    for(int x = 0; x < array.length; x++) {
        if(array[x] != x + 1) {
            System.out.println("Missing Entry: " + (x+1));
            break;
        }
    }
    
  6. # 6 楼答案

    当你找到正确的匹配项时,你刚刚破译了密码:

    只需使用以下命令:

    if(arr[a] != arr2[b]){
        System.out.println("missing element is : "+arr[a]);
        break;
    }
    

    或者用continue替换break