Palindromnummerprogram i Java
Tidligere har vi utviklet mange java-programmer basert på Armstrong-tall. Nå i dette innlegget skal vi utvikle et palindromnummerprogram i java. Den vil sjekke at det gitte nummeret er palindromnummer eller ikke, og senere vil vi utvikle et annet Java-program som vil finne alle palindromnummer i en mellom to tall.
Palindromnummer :- Hvis baksiden av et tall er lik det samme tallet, kalles tallet palindromnummer.
Eksempel på palindromnummer:-
5225 =5225 Så 5225 er et palindromnummer.
123 =321 Så 123 er ikke et palindromnummer.
Dette programmet er helt avhengig av programmet for å finne det motsatte av et tall. Etter å ha funnet det motsatte av et tall, sammenligne resultatet og det faktiske tallet hvis begge er like, så er det gitte tallet et palindromtall, ellers er ikke tallet et palindromtall.
Forutsetning:- Java-program for å finne baksiden av et tall
Prosessen for å sjekke nummeret er et palindromnummer eller ikke,
1) Ta et tall
2) Finn det motsatte av tallet
3) Hvis omvendt og det faktiske tallet 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();
}
}
Utdata for forskjellige testtilfeller:-
Skriv inn et heltall:12345
12345 er ikke et palindromnummer
Skriv inn et heltall:1234321
1234321 er et palindromnummer
I dette programmet er isPalindrome(-)
metode kan også skrives med if-else,
public static boolean isPalindrome(int n) {
if(findReverse(n) == n)
return true;
else
return false;
}
Se også:- Spesialnummer, Magisk nummer, Armstrong-nummer, Perfekt nummer, Evil Number, Spy Number, Sunny-nummer i Java
Java-program for å finne alle palindromnummer i et gitt område
Vi kan også finne alle palindromtallene mellom de to gitte tallene. Til dette formålet må vi bruke 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();
}
}
Utdata for forskjellige testtilfeller:-
Angi min. områdeverdi::1
Angi maks. områdeverdi::100
Palindrometall fra 1 til 100::1 2 3 4 5 6 7 8 9 11 22 33 44 55 66 77 88 99
Angi min. områdeverdi::100
Angi maks. områdeverdi::200
Palindrometall fra 100 til 200::101 111 121 131 141 151 161 171 181 191
Angi min. områdeverdi::1000
Angi maks. områdeverdi::2000
Palindrometall fra 1000 til 2000::1001 1111 1221 1331 1441 1551 1661 1771 1881 1991
En annen måte å sjekke palindromnummeret på
Tanken er å sammenligne det første sifferet med det siste sifferet. På samme måte, det andre sifferet i tallet med det (siste 1) sifferet i tallet, og så videre... Hvis alt returnerer sant, er det gitte tallet et palindromnummer, ellers er det ikke et palindromnummer.
I denne metoden må vi først finne det totale antallet sifre i det gitte tallet. Vi trenger bare å sammenligne opptil number_of_digits/2
Hvis antall sifre i det gitte tallet er oddetall, trenger du ikke sammenligne det midterste tallet.
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å bruke streng for å sjekke at det gitte tallet er et palindromnummer eller ikke, se:- Palindromstreng i Java