1 题目重述
题目描述:输入一个整数 n,并判断是否是"回文数";
回文数:正向读数与反向读数都一致的数字
例如:
* 输入:12321
* 返回:1 代表是回文数
* 输入:9527
* 返回:0 代表不是回文数
2 题目分析
2.1 题目梳理
题目中的关键词:输入,整数n,判断,回文数
今天的题目也是输入一个整数,我们就不多加叙述了。今天的重点在于如何判断回文数上。首先我们要明确回文数的概念,回文数就是指从左边开始读数和从右边开始读数,读到的数完全相同。那么我们的问题就变成了如何正序读数和倒叙读数。
对于这一问题,我们可以将整形转换为字符串类型,通过字符串的倒序遍历来实现倒叙读数。
最后,将原数字与倒叙读数的数字进行比较。
2.2 实现思路
2.2.1 输入
采用 Scanner 类的 nextInt() 方法,获取一个整数n。
2.2.2 倒叙读数
将整形转换成字符型,采用String类的volueOf()方法将整型转换成字符型。
采用for循环进行读数,注意,此时我们需要倒序遍历,所以定义i=len-1,通过i--来进行倒序遍历的实现。
2.2.3 判断是否为回文数
这里有四种思路供大家参考。
思路1:采用String类的equals()方法,进行字符串的比较
思路2:采用String类的compareTo()方法,进行字符串的比较
思路3:采用三目运算符进行比较(优点:减少if(){...}else{...}判断语句的使用)
思路4:采用Integer类的parseInt()方法将字符串转换为整型,采用==进行比较。
3 代码实现
3.1 方式1:
```bash
// 1 获取一个整数n
Scanner input = new Scanner(System.in);
System.out.println("请输入数字:");
int n = input.nextInt();
// 2 倒序读数
// 2.1 将待判断的数字转换成字符串
// 整型 => 字符串
String strN = String.valueOf(n);
// strNum为倒序遍历后的字符串,默认为null
String strNum = "";
// 2.2 倒序遍历字符串中的每个字符,从而将输入的数字倒序
// 2.2.1 判断字符串长度
int len = strN.length();
for (int i = len - 1; i >= 0; i--) {
// 2.2.2 倒序取出字符串中的每一个字符
strNum += strN.charAt(i);
}
// 2.2.3 将倒序遍历后的字符串输出
System.out.println(strNum);
// 3 判断原数字与倒叙后的数字是否相同(即判断原数字是否为回文数)
// 方法1:字符串对象名.equals()方法
if (strNum.equals(strN)) {
//正序读数和倒序读数完全一致
System.out.println(1);
} else {
//正序读数和倒序读数不一致
System.out.println(0);
}
```
代码结果:
```bash
请输入数字:
12321
12321
1
```
```bash
请输入数字:
9527
7259
0
```
3.2 方式2:
```bash
// 1 获取一个整数n
Scanner input = new Scanner(System.in);
System.out.println("请输入数字:");
int n = input.nextInt();
// 2 倒序读数
// 2.1 将待判断的数字转换成字符串
// 整型 => 字符串
String strN = String.valueOf(n);
// strNum为倒序遍历后的字符串,默认为null
String strNum = "";
// 2.2 倒序遍历字符串中的每个字符,从而将输入的数字倒序
// 2.2.1 判断字符串长度
int len = strN.length();
for (int i = len - 1; i >= 0; i--) {
// 2.2.2 倒序取出字符串中的每一个字符
strNum += strN.charAt(i);
}
// 2.2.3 将倒序遍历后的字符串输出
System.out.println(strNum);
// 3 判断原数字与倒叙后的数字是否相同(即判断原数字是否为回文数)
// 方法2:三目运算符进行比较
System.out.println(strNum.equals(strN) ? 1 : 0);
```
代码结果:
```bash
请输入数字:
12321
12321
1
```
```bash
请输入数字:
9527
7259
0
```
3.3 方式3:
```bash
// 1 获取一个整数n
Scanner input = new Scanner(System.in);
System.out.println("请输入数字:");
int n = input.nextInt();
// 2 倒序读数
// 2.1 将待判断的数字转换成字符串
// 整型 => 字符串
String strN = String.valueOf(n);
// strNum为倒序遍历后的字符串,默认为null
String strNum = "";
// 2.2 倒序遍历字符串中的每个字符,从而将输入的数字倒序
// 2.2.1 判断字符串长度
int len = strN.length();
for (int i = len - 1; i >= 0; i--) {
// 2.2.2 倒序取出字符串中的每一个字符
strNum += strN.charAt(i);
}
// 2.2.3 将倒序遍历后的字符串输出
System.out.println(strNum);
// 3 判断原数字与倒叙后的数字是否相同(即判断原数字是否为回文数)
// 方法3:strNumber1.compareTo(strNumber2)方法
// 功能:用于进行字符串间的比较
// 形式:(字符串1).compareTo(字符串2)
// 传入:待比较的两个字符串
// 返回:int类型
// 返回值>0,字符串1>字符串2
// 返回值=0,字符串1=字符串2
// 返回值<0,字符串1<字符串2
if (strN.compareTo(strNum) == 0) {
System.out.println(1);
} else {
System.out.println(0);
}
```
代码结果:
```bash
请输入数字:
12321
12321
1
```
```bash
请输入数字:
9527
7259
0
```
3.4 方式4:
```bash
// 1 获取一个整数n
Scanner input = new Scanner(System.in);
System.out.println("请输入数字:");
int n = input.nextInt();
// 2 倒序读数
// 2.1 将待判断的数字转换成字符串
// 整型 => 字符串
String strN = String.valueOf(n);
// strNum为倒序遍历后的字符串,默认为null
String strNum = "";
// 2.2 倒序遍历字符串中的每个字符,从而将输入的数字倒序
// 2.2.1 判断字符串长度
int len = strN.length();
for (int i = len - 1; i >= 0; i--) {
// 2.2.2 倒序取出字符串中的每一个字符
strNum += strN.charAt(i);
}
// 2.2.3 将倒序遍历后的字符串输出
System.out.println(strNum);
// 3 判断原数字与倒叙后的数字是否相同(即判断原数字是否为回文数)
// 方法4:将字符串转换为整型,再进行比较
// 将字符串转换成整型
int num = Integer.parseInt(strNum);
System.out.println(number2);
// 比较两个数字是否相同
if (n == num) {
System.out.println(1);
} else {
System.out.println(0);
}
```
代码结果:
```bash
请输入数字:
12321
12321
1
```
```bash
请输入数字:
9527
7259
0
```
3.5 方式5:
如果你的程序中需要多次进行回文数的判断,可以将该问题的解决方式写成一个方法,在主函数中调用即可。此处的判断方式**采用String类的equals()方法,进行字符串的比较。**
```bash
public static void main(String[] args) {
// 1.获取输入的整数
Scanner input = new Scanner(System.in);
System.out.println("请输入数字:");
int n = input.nextInt();
// 2.调用方法并输出
System.out.println(isPalindromeNumber(n));
}
public static int isPalindromeNumber(int n) {
// 1.将数字转换成字符串
String strN = String.valueOf(n);
// 2.逐个获取字符串中的每个字符,并倒序保存在新字符串中
String strNum = "";
for (int i = strN.length() - 1; i >= 0; i--) {
char c = strN.charAt(i);
strNum += c;
}
// 3.判断两个字符串是否相同
// 方法1:
if (strN.equals(strNum)) {
return 1;
}
return 0;
}
```
代码结果:
```bash
请输入数字:
12321
12321
1
```
```bash
请输入数字:
9527
7259
0
```
如有错误,请大家批评指正。