上面就是PTA中的题目要求,看了题目要求后,我们可以做以下思路分析
整体思路可分为两个部分,一个是判断回文数的位数,另一个部分则是判断是否为回文数。
1:判断回文数的位数,利用整形除法运算,将输入的数进行放入while循环,进行除法运算,定义一个计数的变量,随着除法运算的进行输入的数的数位会开始减少,随之计算变量加1,直到将输入数的位数全部记录完成,方法代码如下:
static int fu(int a)
{
int count = 0;
while(a!=0)
{
count++;
a=a/10;
}
return count;
}
2:进行回文数的判断,首先要了解清楚回文数的定义,即倒序数值仍为原数值。所以思路可以这样进行构思,将输入的数的各个数位都算出来进行倒叙放大,例如,12121,算出个位乘上10000,算出十位乘上1000,算出百位乘上100,以此类推,最后相加求和与原数值进行比较,判断是否为回文数。利用1中算出的位数进行循环计算放大相应倍数相加,先对a取余,利用循环放大相应倍数,在把放大倍数随着相加的进行,方法代码如下:
System.out.println(weishu);
while(a!=0){
int x=a%10;
int y=weishu;
while(y--!=1)
{
x*=10;
}
sum+=x;
weishu--;
a=a/10;
}
if(sum==yuan){
System.out.println("Y");
}
else
System.out.println("N");
整体判断是否为回文数以及回文数的位数的代码如下,
import java.util.Scanner;
public class Main{
public static void main(String []args){
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
int weishu=fu(a);
int yuan=a;
int sum=0;
System.out.println(weishu);
while(a!=0){
int x=a%10;
int y=weishu;
while(y--!=1)
{
x*=10;
}
sum+=x;
weishu--;
a=a/10;
}
if(sum==yuan){
System.out.println("Y");
}
else
System.out.println("N");
}
static int fu(int a)
{
int count = 0;
while(a!=0)
{
count++;
a=a/10;
}
return count;
}
}