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();
}
}