回文数概念:
回文是一种从前往后读和从后往前读都一样的文字或者数字。
例如:12321,abcba。
解题:
- 先向程序中输入字符串用到Scanner。
- 将字符串转换成字符数组的形式存放 用到 数组名.toCharArray();
- 在定义三个变量一个表示字符串最左边数,一个表示最右边数,一个表示判断左右字符是否相等的次数。
- 最后判断的次数(也就是程序中的x)如果等于字符数组长度的话就是回文数。如果第一次判断都不相等的话不会执行if中的语句。
- 举例:12321
- c[0]是否等于c[4] (等于的话x++,否则不会执行本次if中的语句)
- c[1]是否等于c[3]
- c[2]是否等于c[2]
- c[3]是否等于c[1]
- c[4]是否等于c[0]
- 如果第一次判断c[0]不等于c[4]的情况下将不会执行left++,right--,x++
以上所述结合以下代码来看
import java.util.Scanner;
public class code {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.print("请输入需要判断的数:");
//向程序中输入字符串
String a=sc.next();
//将字符串转换成字符数组的形式存放
char[] c=a.toCharArray();
int x=0;
int left=0; //left表示最左边的字符
int right=c.length-1; //c.length-1表示字符数组c的真正长度
for(int i=0;i<c.length;i++){ //i<c.length相当于i<=c.length-1
if(c[left]==c[right]){
left++; //c[0],c[1],c[2]...c[n]
right--; //c[n],c[n-1]...c[n-n]
x++;
/* x表示最左边字符和最右边字符进行判断的次数
(如果是回文最左边的数判断到最右边,最右边的数判断到最左边)
*/
}
}
if(x==c.length)
System.out.println(a+"是回文数");
else
System.out.println(a+"不是回文数");
}
}