Palindrom nummer program i Java
Tidligere har vi udviklet mange java-programmer baseret på Armstrong-numre. Nu i dette indlæg vil vi udvikle et palindromnummerprogram i java. Det vil kontrollere, at det givne nummer er palindromnummer eller ej, og senere vil vi udvikle et andet Java-program, som finder alle palindromnummer i en mellem to tal.
Palindromnummer :- Hvis bagsiden af et tal er lig med det samme tal, kaldes tallet palindromnummer.
Eksempel på palindromnummer:-
5225 =5225 Så 5225 er et palindromtal.
123 =321 Så 123 er ikke et palindromnummer.
Dette program afhænger helt af programmet for at finde det omvendte af et tal. Når du har fundet det omvendte af et tal, skal du sammenligne resultatet og det faktiske tal, hvis begge er ens, så er det givne tal et palindromtal, ellers er tallet ikke et palindromtal.
Forudsætning:- Java-program til at finde bagsiden af et tal
Processen for at kontrollere nummeret er et palindromnummer eller ej,
1) Tag et tal
2) Find det omvendte af tallet
3) Hvis omvendt og det faktiske tal er det samme, så et palindromnummer
4) Ellers er det ikke et palindromnummer
Palindromnummerprogram i Java
import java.util.Scanner;
public class PalindromeNumber {
// returns reverse of a number
public static int findReverse(int num) {
// declare a temporary variable and
// initialize it with 0
int reverse = 0;
// loop to repeat the process
while(num != 0) {
// find last digit of number
// multiply temporary variable by 10
// add last digit to temporary variable
reverse = (reverse*10 ) + (num%10);
// remove last digit
num = num / 10;
}
return reverse;
}
// returns true if number is Palindrome
public static boolean isPalindrome(int n) {
return (findReverse(n) == n) ? true : false;
}
public static void main(String[] args) {
// declare variable
int number = 0;
// create Scanner class object
Scanner scan = new Scanner(System.in);
// take input
System.out.print("Enter an integer number: ");
number = scan.nextInt();
// check number is palindrome or not
if(isPalindrome(number))
System.out.println(number+
" is a palindrome number");
else
System.out.println(number+
" is not a palindrome number");
// close Scanner class object
scan.close();
}
}
Output for forskellige test-cases:-
Indtast et heltal:12345
12345 er ikke et palindromnummer
Indtast et heltal:1234321
1234321 er et palindromnummer
I dette program er isPalindrome(-)
metode kan også skrives ved hjælp af if-else,
public static boolean isPalindrome(int n) {
if(findReverse(n) == n)
return true;
else
return false;
}
Se også:- Specialnummer, Magisk nummer, Armstrong-nummer, Perfekt nummer, Evil Number, Spionnummer, Sunny-nummer i Java
Java-program til at finde alle palindromnumre i et givet område
Vi kan også finde alle palindromtal mellem de to givne tal. Til dette formål skal vi bruge løkken.
import java.util.Scanner;
public class PalindromeNumberInRange {
// returns reverse of a number
public static int findReverse(int num) {
// declare a temporary variable and
// initialize it with 0
int reverse = 0;
// loop to repeat the process
while(num != 0) {
// find last digit of number
// multiply temporary variable by 10
// add last digit to temporary variable
reverse = (reverse*10 ) + (num%10);
// remove last digit
num = num / 10;
}
return reverse;
}
// returns true if number is Palindrome
public static boolean isPalindrome(int n) {
return (findReverse(n)==n) ? true : false;
}
public static void main(String[] args) {
// declare variables
int minRange , maxRange;
// create Scanner class object
Scanner scan = new Scanner(System.in);
// read inputs
System.out.print("Enter min Range value::");
minRange = scan.nextInt();
System.out.print("Enter max Range value::");
maxRange = scan.nextInt();
// find in the given range
System.out.println("Palindrome numbers "+
"from "+minRange+" to "+maxRange+":: ");
for(int i = minRange; i<= maxRange; i++) {
if(isPalindrome(i))
System.out.print( i + " ");
}
// close Scanner class object
scan.close();
}
}
Output for forskellige test-cases:-
Indtast min. områdeværdi::1
Indtast maks. områdeværdi::100
Palindromtal fra 1 til 100::1 2 3 4 5 6 7 8 9 11 22 33 44 55 66 77 88 99
Indtast min. områdeværdi::100
Indtast maks. områdeværdi::200
Palindromtal fra 100 til 200::101 111 121 131 141 151 161 171 181 191
Indtast min. områdeværdi::1000
Indtast maks. områdeværdi::2000
Palindromtal fra 1000 til 2000::1001 1111 1221 1331 1441 1551 1661 1771 1881 1991
En anden måde at kontrollere palindromnummeret på
Ideen er at sammenligne det første ciffer med det sidste ciffer. På samme måde er det andet ciffer i tallet med (sidste 1) ciffer i tallet, og så videre... Hvis alt returnerer sandt, er det givne tal et palindromtal, ellers er det ikke et palindromtal.
I denne metode skal vi først finde det samlede antal cifre i det givne tal. Vi skal kun sammenligne op til number_of_digits/2
Hvis antallet af cifre i det givne tal er ulige, er det ikke nødvendigt at sammenligne det midterste tal.
import java.util.Scanner;
public class PalindromeNumberAnotherWay {
// returns true if number is Palindrome
public static int findNumberOfDigits(int n) {
int digits = 0;
while(n != 0) {
digits++;
n /= 10;
}
return digits;
}
public static boolean isPalindrome(int num) {
// declare the variables
int leading_digit = 0; // first digit
int trailing_digit = 0; // last digit
int n = num; // variable to store number
// count number of digits in the number
int digit_count = findNumberOfDigits(num);
// Find appropriate divisor to extract
// the leading digit
int divisor =(int)Math.pow(10,digit_count-1);
// loop
for(int i=1; i<=digit_count/2; i++) {
leading_digit=n/divisor; //first digit
trailing_digit = n%10; // last digit
// compare first and last digit
if(leading_digit != trailing_digit)
return false;
n = n % divisor; // remove first digit
n = n / 10; // remove last digit
// last digit & first digit are removed
// so also divide the divisor by 10*10
divisor /= 100;
}
return true;
}
public static void main(String[] args) {
// declare variable
int number = 0;
// create Scanner class object
Scanner scan = new Scanner(System.in);
// take input
System.out.print("Enter an integer number:");
number = scan.nextInt();
// check number is palindrome or not
if(isPalindrome(number))
System.out.println(number+
" is a palindrome number");
else
System.out.println(number+
" is not a palindrome number");
// close Scanner class object
scan.close();
}
}
Vi kan også bruge streng til at kontrollere, at det givne tal er et palindromnummer eller ej. Se:- Palindromstreng i Java