(回文整数)利用数组进行逆反数判断回文,不使用数组进行判断回文。
前情提要
编写方法:
// Return the reveral of an integer ,e.g.,reverse(456) return 654
public static int reverse(int number)
// Return true if number is a palindrome
public static boolean isPalindrome(int number)
使用reverse方法实现isPalindrome。如果一个数字的逆序数和它自身相等,这个数就称作回文输。编写一个测试程序,提示用户输入一个整数值,然后报告这个整数是否是回文数。
方法一
利用数组存储数据,然后进行逆反数储存。
最后通过比较逆反数与原本数,进行判断是否回文。
import java.lang.*;
import java.util.Scanner;
public class s1_1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner reader=new Scanner(System.in);
int n;
System.out.println("请输入你要判断的正整数");
n=reader.nextInt();
System.out.println("这个正整数是否回文数:"+isPalindrome(n));
}
public static int reverse(int number)//进行逆反数输出
{
int i=0,j,b=0,n=number,last=0;
//判断正整数有几位
while(n!=0)//3223 322 32
{
n=n/10;//322 32 3 0
i++;//1 2 3 4
}
//对数组进行申请相关位数空间
int [] a=new int[i+1];
i=0;//n 3223
//重置n
n=number;
//进行存储逆反数
while(n!=0)
{
a[i]=n%10;//3 2 2 3
n=n/10;//322 32 3 0
i++;//1 2 3 4
}//i 4
//i在后期要成为每位数的10的i次方,故减一
i--;//3
//记载正整数的位数,控制后期的j
last=i;
//进行逆反数输出
for(j=0;j<=last;j++,i--)
{
b+=a[j]*(int)Math.pow(10, i);//0+3*1000+2*100+2*10+3*1
}
return b;
}
public static boolean isPalindrome(int number)//进行判断是否回文
{
return number==reverse(number);
}
}
输入
3223
输出
方法二
import java.lang.*;
import java.util.Scanner;
public class s1_1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner reader=new Scanner(System.in);
int n;
System.out.println("请输入你要判断的正整数");
n=reader.nextInt();
System.out.println("这个正整数是否回文数:"+isPalindrome(n));
}
public static int reverse(int number)//进行逆反数输出
{
int result=0;
while(number!=0) {
result = result * 10 + number % 10;//取最后一位,然后最后一位*10
number = number / 10;//去除最后一位
}
return result;
}
public static boolean isPalindrome(int number)//进行判断是否回文
{
return number==reverse(number);
}
}
输出
输入
3223
题目来源
Java语言程序设计与数据结构(基础篇),也就是Java的黑皮书。