双循环以从输入的序列中找到缺失的数字

时间:2017-12-07 06:08:51

标签: java for-loop

需要帮助才能使用for循环来完成此学习者

程序:

import java.util.Scanner;

public class Main1 {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int id[] = new int[n];
        for(int i=0; i<=n; i++) {
            id[i] = scan.nextInt();
        }
    }
}

输入格式:
第一个输入由与ID数相对应的整数n组成。 下一个n输入对应于ID。

输出格式:
输出应显示缺少的Id。

2 个答案:

答案 0 :(得分:0)

我只是写一个可以帮助你的功能:

  public class Enrollment {
    public static void prinMiss(int arr[],int size)
    {
        int y=arr[0];
        //System.out.println(y);
        int y1=arr[size-1];
        //System.out.println(y1);

        int counter=y;
        int flag=0;
        for(int i=0;i<size;i++)
        {
            if(arr[i]==counter)
            {
                //System.out.println(counter);
                counter++;
            }
            else
            {
                flag=1;
                break;
            }
        }
        if(flag==1){
        System.out.println(counter);
        }
        else
            System.out.println("Nothing is missing");
    }
public static void main(String ars[])
{
    Scanner in =new Scanner(System.in);
    int n;
    n=in.nextInt();
    int id[]=new int[n];
    for(int i=0;i<n;i++)
    {
        id[i]=in.nextInt();
    }
    prinMiss(id,n);
}
}

在上面的 prinMiss 函数中,我假设ID总是按顺序排列,只有1个ID不在序列中。

答案 1 :(得分:0)

试试这个,你可以根据你输入的顺序在数字之间得到缺失。

public static void main(String[] args){

        Scanner scan = new Scanner(System.in);
        int num = 0;
        int missingTrack = 0;
        System.out.println("Enter number of sequence:");
        int n = scan.nextInt();
        int id[] = new int[n];
        int missing[] = new int[10];

        for(int i=0; i<n; i++) {
            System.out.printf("Enter number %d:",i+1);
            id[i] = scan.nextInt();
        }

        for(int i=0; i<n; i++) {

            //Stop to check when the loop reach the last number in the sequence.
            if(i==n-1)
            {
                break;
            }
            //Assign the different between the next number to identify the missing number
            num = id[i+1]-id[i];

            //Loop based on the difference we get from "num"
            for(int y = 1;y<num;y++)
            {
                //Evaluate and store the missing number into the array
                missing[missingTrack] = id[i]+y;
                missingTrack = missingTrack+1;
            }

        }   
        System.out.println("Missing input: ");
        for(int i=0; i < missingTrack; i++) {
            System.out.print(missing[i]+" ");
        }

}

使用双For循环检查并跟踪缺失的数字,希望您能了解如何将其实现到您的方案中。

PS:假设输入的序列按升序排列。如果输入不是按顺序输入,则需要首先进行额外的检查或排序。