1 題目重述
題目描述:輸入一個整數(shù) n,并判斷是否是"回文數(shù)";
回文數(shù):正向讀數(shù)與反向讀數(shù)都一致的數(shù)字
例如:
* 輸入:12321
* 返回:1 代表是回文數(shù)
* 輸入:9527
* 返回:0 代表不是回文數(shù)
2 題目分析
2.1 題目梳理
題目中的關(guān)鍵詞:輸入,整數(shù)n,判斷,回文數(shù)
今天的題目也是輸入一個整數(shù),我們就不多加敘述了。今天的重點在于如何判斷回文數(shù)上。首先我們要明確回文數(shù)的概念,回文數(shù)就是指從左邊開始讀數(shù)和從右邊開始讀數(shù),讀到的數(shù)完全相同。那么我們的問題就變成了如何正序讀數(shù)和倒敘讀數(shù)。
對于這一問題,我們可以將整形轉(zhuǎn)換為字符串類型,通過字符串的倒序遍歷來實現(xiàn)倒敘讀數(shù)。
最后,將原數(shù)字與倒敘讀數(shù)的數(shù)字進行比較。
2.2 實現(xiàn)思路
2.2.1 輸入
采用 Scanner 類的 nextInt() 方法,獲取一個整數(shù)n。
2.2.2 倒敘讀數(shù)
將整形轉(zhuǎn)換成字符型,采用String類的volueOf()方法將整型轉(zhuǎn)換成字符型。
采用for循環(huán)進行讀數(shù),注意,此時我們需要倒序遍歷,所以定義i=len-1,通過i--來進行倒序遍歷的實現(xiàn)。
2.2.3 判斷是否為回文數(shù)
這里有四種思路供大家參考。
思路1:采用String類的equals()方法,進行字符串的比較
思路2:采用String類的compareTo()方法,進行字符串的比較
思路3:采用三目運算符進行比較(優(yōu)點:減少if(){...}else{...}判斷語句的使用)
思路4:采用Integer類的parseInt()方法將字符串轉(zhuǎn)換為整型,采用==進行比較。
3 代碼實現(xiàn)
3.1 方式1:
```bash
? // 1 獲取一個整數(shù)n
? Scanner input = new Scanner(System.in);
? System.out.println("請輸入數(shù)字:");
? int n = input.nextInt();
? // 2 倒序讀數(shù)
? // 2.1 將待判斷的數(shù)字轉(zhuǎn)換成字符串
? // 整型 => 字符串
? String strN = String.valueOf(n);
? // strNum為倒序遍歷后的字符串,默認為null
? String strNum = "";
? // 2.2 倒序遍歷字符串中的每個字符,從而將輸入的數(shù)字倒序
? // 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 判斷原數(shù)字與倒敘后的數(shù)字是否相同(即判斷原數(shù)字是否為回文數(shù))
? // 方法1:字符串對象名.equals()方法
? if (strNum.equals(strN)) {
? //正序讀數(shù)和倒序讀數(shù)完全一致
? System.out.println(1);
? } else {
? //正序讀數(shù)和倒序讀數(shù)不一致
? System.out.println(0);
? }
```
代碼結(jié)果:
```bash
請輸入數(shù)字:
12321
12321
1
```
```bash
請輸入數(shù)字:
9527
7259
0
```
3.2 方式2:
```bash
? // 1 獲取一個整數(shù)n
? Scanner input = new Scanner(System.in);
? System.out.println("請輸入數(shù)字:");
? int n = input.nextInt();
? // 2 倒序讀數(shù)
? // 2.1 將待判斷的數(shù)字轉(zhuǎn)換成字符串
? // 整型 => 字符串
? String strN = String.valueOf(n);
? // strNum為倒序遍歷后的字符串,默認為null
? String strNum = "";
? // 2.2 倒序遍歷字符串中的每個字符,從而將輸入的數(shù)字倒序
? // 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 判斷原數(shù)字與倒敘后的數(shù)字是否相同(即判斷原數(shù)字是否為回文數(shù))
? // 方法2:三目運算符進行比較
? System.out.println(strNum.equals(strN) ? 1 : 0);
```
代碼結(jié)果:
```bash
請輸入數(shù)字:
12321
12321
1
```
```bash
請輸入數(shù)字:
9527
7259
0
```
3.3 方式3:
```bash
? // 1 獲取一個整數(shù)n
? Scanner input = new Scanner(System.in);
? System.out.println("請輸入數(shù)字:");
? int n = input.nextInt();
? // 2 倒序讀數(shù)
? // 2.1 將待判斷的數(shù)字轉(zhuǎn)換成字符串
? // 整型 => 字符串
? String strN = String.valueOf(n);
? // strNum為倒序遍歷后的字符串,默認為null
? String strNum = "";
? // 2.2 倒序遍歷字符串中的每個字符,從而將輸入的數(shù)字倒序
? // 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 判斷原數(shù)字與倒敘后的數(shù)字是否相同(即判斷原數(shù)字是否為回文數(shù))
? // 方法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);
? }
```
代碼結(jié)果:
```bash
請輸入數(shù)字:
12321
12321
1
```
```bash
請輸入數(shù)字:
9527
7259
0
```
3.4 方式4:
```bash
? // 1 獲取一個整數(shù)n
? Scanner input = new Scanner(System.in);
? System.out.println("請輸入數(shù)字:");
? int n = input.nextInt();
? // 2 倒序讀數(shù)
? // 2.1 將待判斷的數(shù)字轉(zhuǎn)換成字符串
? // 整型 => 字符串
? String strN = String.valueOf(n);
? // strNum為倒序遍歷后的字符串,默認為null
? String strNum = "";
? // 2.2 倒序遍歷字符串中的每個字符,從而將輸入的數(shù)字倒序
? // 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 判斷原數(shù)字與倒敘后的數(shù)字是否相同(即判斷原數(shù)字是否為回文數(shù))
? // 方法4:將字符串轉(zhuǎn)換為整型,再進行比較
? // 將字符串轉(zhuǎn)換成整型
? int num = Integer.parseInt(strNum);
? System.out.println(number2);
? // 比較兩個數(shù)字是否相同
? if (n == num) {
? System.out.println(1);
? } else {
? System.out.println(0);
? }
```
代碼結(jié)果:
```bash
請輸入數(shù)字:
12321
12321
1
```
```bash
請輸入數(shù)字:
9527
7259
0
```
3.5 方式5:
如果你的程序中需要多次進行回文數(shù)的判斷,可以將該問題的解決方式寫成一個方法,在主函數(shù)中調(diào)用即可。此處的判斷方式**采用String類的equals()方法,進行字符串的比較。**
```bash
public static void main(String[] args) {
? // 1.獲取輸入的整數(shù)
? Scanner input = new Scanner(System.in);
? System.out.println("請輸入數(shù)字:");
? int n = input.nextInt();
? // 2.調(diào)用方法并輸出
? System.out.println(isPalindromeNumber(n));
}
public static int isPalindromeNumber(int n) {
? // 1.將數(shù)字轉(zhuǎn)換成字符串
? 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;
}
```
代碼結(jié)果:
```bash
請輸入數(shù)字:
12321
12321
1
```
```bash
請輸入數(shù)字:
9527
7259
0
```
如有錯誤,請大家批評指正。