【Java每日編程小練習 2021-01-18】

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

```


如有錯誤,請大家批評指正。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1 題目重述 輸入一個整數(shù) n,請計算并返回該整數(shù)「各位數(shù)字之積」與「各位數(shù)字之和」的差 例如: 輸入:567 返...
    北北夜曦閱讀 359評論 0 1
  • 50道經(jīng)典Java編程練習題,將數(shù)學思維運用到編程中來。抱歉哈找不到文章的原貼了,有冒犯的麻煩知會聲哈~ 1.指數(shù)...
    OSET我要編程閱讀 7,289評論 0 9
  • 2019年8月8日開始編寫,等50題做完了希望不會太晚。 本篇純屬本人的練手作業(yè),本人也不是什么大神,僅供參考。 ...
    墨鳶Wesley閱讀 936評論 0 0
  • 50道JAVA基礎(chǔ)編程練習題 【程序1】 題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子...
    清先生閱讀 375評論 0 2
  • 1.指數(shù)計算問題 有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔...
    愛java的三羅閱讀 665評論 -1 2

友情鏈接更多精彩內(nèi)容