Home > Software design >  How to print only distinct integer values once even though they are repeated multiple times
How to print only distinct integer values once even though they are repeated multiple times

Time:01-03

I am trying to print only distinct integer values once even though they are repeated multiple times in an array with the introduced order. Firstly, I need to take array size from user but I cannot determine how to initialize that variable.Can I use n -inclueded in the code- as an array size variable? When I compiled I doesn't print anything. Where are my mistakes, and how to deal with them? Any idea?

public static void uniqueNumbers(int arr[], int n)
    {
        for (int i=0; i<n; i  )
        {
            for (int j =0; j<i;j  )
            {
                if (arr [i]==arr[j])
                    break;
            
            if (i==j)
                System.out.print(arr[i]   " ");
                
        }
    }
}

public static void main(String[] args) {
    Scanner sc =new Scanner(System.in);
    int n =sc.nextInt();
    int arr [] = new int [n];
    uniqueNumbers(arr,n);

}

}

CodePudding user response:

You need to fill the array,that is, you need to take input for the array elements.

public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
int n =sc.nextInt();
int arr [] = new int [n];
 //Add the following lines.
for (int i = 0; i < n; i  ) {
    arr[i] = sc.nextInt();
}
uniqueNumbers(arr,n);
}

Print the array and try your logic again.

CodePudding user response:

you need to first request for the size of the array as shown below:


  public static void main (String[] args)
    {
        Scanner scan = new Scanner(System.in);

        System.out.println("Enter array size");

        int n =scan.nextInt();

        // declaring and creating array objects
        int[] arr = new int[n];

        // displaying default values
        System.out.println("Default values of array:");
        for (int i=0; i < arr.length; i  ) {
            System.out.print(arr[i] "\t");
        }

        // initializing array
        System.out.println("\n\n***Initializing Array***");
        System.out.println("Enter "  arr.length
                  " integer values:");

        for(int i=0; i < arr.length; i  ) {
            // read input
            arr[i] = scan.nextInt();
        }


        uniqueNumbers(arr, n);

    }

CodePudding user response:

public static void uniqueNumbers(int[] arr, int n) {
        int slow = 1;
        for (int fast = 1; fast < n; fast  ) {
            if (arr[fast] != arr[slow - 1]) {
                arr[slow  ] = arr[fast];
            }
        }
        arr = Arrays.copyOf(arr, slow);
        for (int i = 0; i < arr.length; i  ) {
            System.out.println(arr[i]);
        }
    }
  • Related