java 输出回文数_【视频+图文】Java经典基础练习题(五):键盘输入一个五位数,判断此数是否为回文数...

7b4c68eed9fa0e12afcd525e1c6d7b92.png

能解决题目的代码并不是一次就可以写好的

我们需要根据我们的思路写出后通过debug模式找到不足再进行更改

多次测试后才可得到能解决题目的代码!

通过学习,练习【Java基础经典练习题】,让我们一起来培养这种解决问题思路。

一、视频讲解

b8b4444ec9f9041987128bae459d3bef.png

二、思路分析

【如何获取一个正整数的每一位】以及【如何使用键盘输入】点击这里复习:3e1ae9c32ea9d2c94292b8a8ddac39ed.png

Q1: 什么是回文数?0059d5e0e5cd412e449cd220e3057388.png

Q2:怎样获取一个五位数的每一位?

A2: 第四题我们已经对这个问题具体讲解过了~

点击下面的视频就可以看到第四题。

3e1ae9c32ea9d2c94292b8a8ddac39ed.png

先用输入的正整数num与10取余,

再将输入的正整数num与10相除,得到的结果仍保存在num中。即num=num/10

2. 我们可以看到:

最后一次循环被除数为1,此时每一位都已被取出。所以被除数大于012321%10=1(个位) 12321/10=1232

1232%10=2(十位) 1232/10=123

123%10=3(百位)123/10=12

12%10=2(千位)12/10=1

1%10=1(万位)1/10=0

三、代码+详解+结果

代码:

a739ef1ba60c42f0cacc586144e75f71.png

import java.util.Scanner;

public class HuiWen {

public static void main(String[] args) {

int num, num1 = 0;

int i = 0;

int yu = 0;// 将取出的每一位数保存在变量yu中

Scanner sc = new Scanner(System.in);

System.out.println("请输入一个五位数");

num = sc.nextInt();// 将键盘输入的数存入变量num中

int arr[] = new int[5];// 因为输入的是5位数,所以数组长度为5

num1 = num;// 把num的值赋给num1

/*

* 思路:输入的正整数num与10取余, 再将输入的正整数num与10相除, 相除后的结果仍保存在num中,即num=num/10

*/

while (num1 > 0 && i 

yu = num1 % 10;// 取出的每一位保存在变量yu中

arr[i] = yu;// 将yu的值赋给arr[i]

num1 = num1 / 10;// 为取出下一位数做准备

i++;// 数组的索引i需要+1,如果不+1那么原来放入的数就会被新放入的数代替,即循环过后只有arr[0]是有值的

}

if (arr[0] == arr[4] && arr[1] == arr[3]) {// 如果个位和万位相等并且十位和千位相等(两个条件都要满足),此数为回文数

System.out.println(num + "是回文数");// 如果此处写的是num1,输出的就是0。并不是我们通过键盘输入的数

} else {// 否则,就不是回文数

System.out.println(num + "不是回文数");

}

}

}a739ef1ba60c42f0cacc586144e75f71.png

以键盘输入12321为例:

1.num=12321,num1=num=12321(用num1>0&&i

2.i=0 (数组arr的下标,因为arr.length=5,所以arr的下标范围【0-4】)

3.yu=0(将取出的每一位数保存在变量yu中)

4.创建一个数组arr ,长度为5,因为我们输入的是5位数

5.进入while循环a739ef1ba60c42f0cacc586144e75f71.png

while (num1 > 0 && i < arr.length) {      // 用num1的值做判断,num在下面输出语句中使用。

yu = num1 % 10;               // 取出的每一位保存在变量yu中

arr[i] = yu;                        // 将yu的值赋给arr[i]

num1 = num1 / 10;         // 为取出下一位数做准备

i++;    // 数组的索引i需要+1,如果不+1那么原来放入的数就会被新放入的数代替,即循环过后只有arr[0]是有值的

       }a739ef1ba60c42f0cacc586144e75f71.png

(1) num1=12321,i=0 满足num1 > 0 && i < arr.length,进入while循环

yu=12321%10=1

arr[0]=yu=1

num1=12321/10=1232

i ++,i=1

(2) num1=1232,i=1满足num1 > 0 && i < arr.length,进入while循环

yu=1232%10=2

arr[1]=yu=2

num1=1232/10=123

i++,i=2

(3) num1=123,i=2满足num1 > 0 && i < arr.length,进入while循环

yu=123%10=3

arr[2]=yu=3

num1=123/10=12

i++,i=3

(4) num1=12,i=3满足num1 > 0 && i < arr.length,进入while循环

yu=12%10=2

arr[3]=yu=2

num1=12/10=1

i++,i=4

(5) num1=1,i=4满足num1 > 0 && i < arr.length,进入while循环

yu=1%10=1

arr[4]=yu=1

num1=1/10=0

i++,i=5

(6) num=0,i=5不满足num1 > 0 && i < arr.length,退出while循环

6. 进入if条件分支语句a739ef1ba60c42f0cacc586144e75f71.png

if (arr[0] == arr[4] && arr[1] == arr[3]) {  // 如果个位和万位相等并且十位和千位相等(两个条件都要满足),此数为回文数

System.out.println(num + "是回文数");// 如果此处写的是num1,输出的就是0。并不是我们通过键盘输入的数

} else {                                        // 否则,就不是回文数

System.out.println(num+ "不是回文数");

       }a739ef1ba60c42f0cacc586144e75f71.png

(1) 因为此处arr[0]==arr[4]&&arr[1]==arr[3]成立

(2) 所以输出12321是回文数

注意:此处要用num输出。如果此处写的是num1,输出的就是0。

结果:

85b8df1d74a0dcbb01a8dc16195d66cf.png

40b20412528a3e432c1797c149f1dfc6.png

四、彩蛋

欢迎大家来“小乔的编程内容分享站”

找小乔玩~

一起学习Java基础+算法~

还有更多资源等你来拿哦~

0bdf504ecfa55f7d46c89060f12449f1.png

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值