Java >> Java tutorial >  >> Java

Unikt nummer i Java

I dette indlæg vil vi udvikle et Java-program til at kontrollere, om det givne nummer er et unikt nummer eller ej.

Et nummer, der ikke har nogen duplikerede cifre, kaldes et unikt nummer. For eksempel:- 123, 7158, 98547 er unikke tal, men 1111, 1233, 514425 er ikke unikke tal, fordi de har ét ciffer mere end én gang.

Til denne opgave skal vi bruge 2 løkker (indre løkke og ydre løkker). Vi har flere måder at udvikle en Java-metode på for at kontrollere, om det givne nummer er et unikt nummer eller ej.
1) Ved at sammenligne hvert ciffer manuelt
2) Brug af Array
2) Brug af streng

Først vil vi sammenligne hvert ciffer manuelt. Fremgangsmåde:-
1) Tag et tal
2) Find dets sidste ciffer.
3) Sammenlign alle cifre i tallet med dette sidste ciffer.
4) Hvis det fandt mere end én gang, så er tallet ikke et unikt nummer.
5) Ellers fjern det sidste ciffer i tallet
6) Gentag de 2 til 5 trin, indtil tallet bliver nul.

import java.util.Scanner;

public class UniqueNumber {

   // method to check the Unique number
   public static boolean isUnique(int number) {

      int n1 = number; //1st temporary variable
      int lastDigit = 0;
      int n2; //2nd temporary variable
      int count; 

      // iterate through all digits of number
      while(n1 != 0) {

         // find last digits
         lastDigit = n1 % 10;

         // compare this digit with 
         // all digits
         n2 = number;
         count = 0;

         // loop
         while(n2 != 0) {

            // find last digit
            // and compare
            if(lastDigit == n2%10)
            count++;

            // remove last digit
            n2 /= 10;
         }

         if(count != 1)
         return false;

         // remove last digit
         n1 /= 10;
      }

      return true;
   }

   // main method
   public static void main(String[] args) {

      // declare variables
      int number = 0;
      boolean result = false;

      //create Scanner class object to take input
      Scanner scan = new Scanner(System.in);

      // take input from end-user
      System.out.print("Enter an integer number::");
      number = scan.nextInt();

      // check number is Unique number or not
      result = isUnique(number);

      // display
      if(result)
      System.out.println(number +
                 " is a Unique number.");
      else
      System.out.println(number +
                 " is not a Unique number.");

      // close Scanner class object
      scan.close();
   }
}

Outputtet for de forskellige testcases er:-

Indtast et heltal::1234
1234 er et unikt tal.

Indtast et heltal::456845
456845 er ikke et unikt tal.

Tjek unikt nummer ved hjælp af Array

Nu vil vi udvikle det samme program ved hjælp af et array. Ideen er at finde alle cifre i nummeret og gemme det i arrayet. Sammenlign senere værdier af alle indekser med hinanden, hvis de er ens, tallet er ikke et unikt tal.

Men før vi sammenligner alle indekser, er vi nødt til at erklære en matrix af størrelse "antal_cifre i antallet".

import java.util.Scanner;

public class UniqueNumberUsingArray {

   // Method to check the Unique number
   public static boolean isUnique(int number) {

      // count number of digits
      int digits = countDigits(number);

      // declare array
      int[] arr = new int[digits];

      // initialize array
      for(int i=0; i<digits; i++) {

         // add last digit to ith position
         arr[i] = (int)number%10;

         // remove last digit
         number /= 10;
      }

      // compare array elements
      for(int i=0; i<digits; i++) {
         for(int j=0; j<digits; j++) {
            if(i!=j && arr[i]==arr[j])
            return false;
         }
      }

      return true;
   }

   public static int countDigits(int number) {
      int count = 0;
      while(number != 0) {
         count++;
         number /= 10;
      }
      return count;
   }

   // main method
   public static void main(String[] args) {

      // declare variables
      int number = 0;
      boolean result = false;

      //create Scanner class object to take input
      Scanner scan = new Scanner(System.in);

      // take input from end-user
      System.out.print("Enter an integer number::");
      number = scan.nextInt();

      // check number is Unique number or not
      result = isUnique(number);

      if(result)
      System.out.println(number +
                  " is an Unique number.");
      else
      System.out.println(number +
                 " is not an Unique number.");

      // close Scanner class object
      scan.close();
   }
}

Brug af streng

Konverter først det givne tal til en streng og sammenlign derefter hvert tegn i strengen med hinanden.

import java.util.Scanner;

public class UniqueNumberUsingString {

   // Method to check the Unique number
   private static boolean isUnique(int number) {

      // convert number to string
      String str = Integer.toString(number);

      // compare characters of the String
      for(int i=0; i<str.length(); i++) {
         for(int j=0; j<str.length(); j++) {
            if( i != j   && 
                str.charAt(i)==str.charAt(j) )
               return false;
         }
      }

      return true;
   }

   // main method
   public static void main(String[] args) {

      // declare variables
      int number = 0;
      boolean result = false;

      //create Scanner class object to take input
      Scanner scan = new Scanner(System.in);

      // take input from end-user
      System.out.print("Enter an integer number::");
      number = scan.nextInt();

      // check number is Unique number or not
      result = isUnique(number);

      // display result
      if(result)
      System.out.println(number +
                  " is an Unique number.");
      else
      System.out.println(number +
                 " is not an Unique number.");

      // close Scanner class object
      scan.close();
   }
}

Java tag