java程序小功能,【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

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

```

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值