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


    能解决题目的代码并不是一次就可以写好的
    我们需要根据我们的思路写出后通过debug模式找到不足再进行更改
    多次测试后才可得到能解决题目的代码!
    通过学习,练习【Java基础经典练习题】,让我们一起来培养这种解决问题思路。

    一、视频讲解

    点击这里即可去B站观看

    二、思路分析

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

    Q1: 什么是回文数?

    A1: 如:12321
    即将这个数的数字按相反的顺序重新排列后,所得到的数和原来的数一样。
    【正着读是12321,反着读也是12321】
    对于5位数回文数来说就是【个位和万位相同】,【十位和千位相同】 所以可以根据这个条件来判断一个数是否为回文数

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

    A2: 第四题我们已经对这个问题具体讲解过了~
             点击下面的链接就可以看到第四题。

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

    这里小乔就给大家复习一下获取一个数的每一位的规律:

    1. 先用输入的正整数num与10取余
      再将输入的正整数num与10相除,得到的结果仍保存在num
      即num=num/10

    2. 我们可以看到:
      最后一次循环被除数为1,此时每一位都已被取出。所以被除数大于0

    • 12321%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

    三、代码+详解+结果

    代码:

    package Exercise;
    
    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 < arr.length) {// 用num1的值做判断,num在下面输出语句中使用。
    			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 + "不是回文数");
    		}
    	}
    
    }
    
    
    

    详解:

    以键盘输入12321为例:

    1. num=12321,num1=num=12321(用num1>0&&i<arr.length作为while循环的条件)

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

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

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

    int arr[] = new int[5];
    
    1. 接下来进入while循环
    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]是有值的
    		}
    

    (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循环

    1. 进入if条件分支语句
    if (arr[0] == arr[4] && arr[1] == arr[3]) {// 如果个位和万位相等并且十位和千位相等(两个条件都要满足),此数为回文数
    			System.out.println(num + "是回文数");// 如果此处写的是num1,输出的就是0。并不是我们通过键盘输入的数
    		} else {// 否则,就不是回文数
    			System.out.println(num+ "不是回文数");
    		}
    

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

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

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

    结果:

    在这里插入图片描述在这里插入图片描述

    四、彩蛋

    欢迎大家来公号
    “小乔的编程内容分享站” 来找小乔玩~
    一起学习Java基础+算法~
    还有更多资源等你来拿哦~

    在这里插入图片描述

  • 相关阅读:
    Javascript 箭头函数2
    熊二周刊--20160911
    递归
    函数
    Python基本的数据类型内置方法(2)
    python 基础知识条件和循环
    Python初识_基本的数据类型
    计算机网络基础知识
    Python初识
    计算机基础-操作系统
  • 原文地址:https://www.cnblogs.com/Qpgshare/p/12666990.html
Copyright © 2020-2023  润新知