【Java每日编程小练习 2021-01-18】

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

```


如有错误,请大家批评指正。

你可能感兴趣的:(【Java每日编程小练习 2021-01-18】)