Java >> Java tutorial >  >> Java

Fascinerende nummer i Java

I dette indlæg vil vi udvikle et Java-program for at kontrollere, om det givne nummer er et fascinerende nummer eller ej? Vi vil også udvikle et Java-program til at finde alle fascinerende tal mellem to givne tal.

Et tal kaldes et fascinerende tal, hvis det (med mindst 3 cifre) ganges med 2 og 3, og begge disse produkter er sammenkædet med det oprindelige tal, så indeholder det nye tal alle cifrene fra 1 til 9 nøjagtigt enkelt gang. Der kan være et hvilket som helst antal nuller og ignoreres.

Eksempel:-
Antal =192
Multiplikering med 2 => 192 * 2 =384
Multiplicering med 3 => 192 * 3 =576
Sammenkædning => "192" + "384" + "576" =192384576, hvilket indeholder alle cifrene fra 1 til 9 præcis én gang. Derfor er det et fascinerende tal.

Da 192 er et fascinerende tal, så er 1902, 19002, 19000...0002 også et fascinerende tal. Fordi antallet af 0 ignoreres.

Et andet eksempel:-
Antal =273
Multiplicering med 2 => 273 * 2 =546
Multiplicering med 3 => 273 * 3 =819
Sammenkædning => "273" + "546" + "819" ="273546819" , som indeholder alle cifrene fra 1 til 9 præcis én gang. Derfor er det et fascinerende tal.

Procedure

1) Tag et tal
2) Erklær en streng og initialiser den med sammenkædningen af ​​tal, tal*2 og tal*3. Til sammenkædning kan vi bruge + operator

String str = "" + number + number*2 + number*3;

3) Angiv en heltalsmatrix med størrelse 10, som standard er alle elementer i en matrix 0
4) Gå gennem strengens tegn.

  • Find det ith-tegn i iterationen
  • Konverter dette tegn til ciffer (Ikke i ASCII-værdi) og
  • Tjek array[ciffer] er 0 eller ej? Hvis ja, så øg værdien af ​​array[digit]-elementet med 1. Men hvis array[digit] ikke er 0, betyder det, at det allerede er øget på grund af tidligere eksisterende samme ciffer, så tal er ikke et fascinerende tal.
If( arr[digit] == 0 ) arr[digit]++;
else return false;

5) Tjek nu det manglende ciffer, ignorer element=0. Hvis et element i arrayet er nul, betyder det, at streng (nummer) ikke indeholder det tal. Så tallet er ikke et fascinerende tal.
6) Hvis alle tidligere betingelser er opfyldt, er det et fascinerende tal.

Program

import java.util.Scanner;

public class FascinatingNumber {

   // Method to check the Fascinating number
   public static boolean isFascinating(int number){

      // declare variables
      int digit = 0;

      // new number
      String str = "" + number + 
                    number*2 + number*3;

      // declare an array of size 10
      int arr[] = new int[10];

      // compare array elements and
      // characters of the string
      for(int i=0; i<str.length(); i++) {

         // fetch ith character and 
         // convert it into number
         digit = str.charAt(i) - '0';

         // check arr[digit] element
         // and ignore 0
         if(digit==0 || arr[digit]==0)
            arr[digit]++;

         else return false;
      }

      // check their is any
      // missing number.
      // Ignore 1st element (0) of array
      for(int i=1; i<arr.length; i++) {

         // digit i was not their in String
         if(arr[i]==0)
            return false;
     }

      // all conditions satisfied so, return true
      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 Fascinating number or not
      result = isFascinating(number);

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

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

Output for de forskellige test-cases er:-

Indtast et heltal::192
192 er et fascinerende tal.

Indtast et heltal::1902
1902 er et fascinerende tal.

Indtast et heltal::219
219 er et fascinerende tal.

Indtast et heltal::1234
1234 er ikke et fascinerende tal.

Java-program til at finde alle fascinerende tal mellem to tal

import java.util.Scanner;

public class FascinatingNumberInRange {

   // method to check the Fascinating number
   public static boolean isFascinating(int number) {

      // declare variables
      int digit = 0;

      // new number
      String str = "" + number + number*2 + number*3;

      // declare an array of size 10
      int arr[] = new int[10];

      // compare array elements and
      // characters of the string
      for(int i=0; i<str.length(); i++) {

         // fetch ith character and 
         // convert it into number
         digit = str.charAt(i) - '0';

         // check arr[digit] element
         // and ignore 0
         if(digit==0 || arr[digit]==0)
            arr[digit]++;

         else return false;
      }

      // check their is any
      // missing number.
      // Ignore 1st element (0) of array
      for(int i=1; i<arr.length; i++) {

         // digit i was not their in String
         if(arr[i]==0)
            return false;
      }

      // all conditions satisfied so, return true
      return true;
   }

   public static void main(String[] args) {

       // declare variables
       int minRange = 0, maxRange = 0;

       //create Scanner class object to take input
       Scanner scan = new Scanner(System.in);
       System.out.print("Enter minimum value of range:");
       minRange = scan.nextInt();
       System.out.print("Enter maximum value of range:");
       maxRange = scan.nextInt();

       System.out.println("The Fascinating number from "+ 
               minRange + " to "+ maxRange+" are: ");

       // loop
       for(int i=minRange; i<=maxRange; i++) {
           // check number
           if(isFascinating(i))
               System.out.print(i +" ");
       }

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

Output for de forskellige test-cases er:-

Indtast minimum værdi af interval:1
Indtast maximum værdi af område:1000
Det fascinerende tal fra 1 til 1000 er:
192 219 273 327

Indtast minimum værdi af interval:1000
Indtast maximum værdi af interval:10000
Det fascinerende tal fra 1000 til 10000 er:
1902 1920 2019 2190 2703 2730 3027 3270


Java tag