zoukankan      html  css  js  c++  java
  • 【视频+图文】Java经典基础练习题(四):键盘输入一个正整数,获取这个正整数的每一位并将其输出

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

    一、视频讲解

    点击这里即可去B站观看

    二、思路分析

    Q1: 如何从键盘输入3个整数?

    A1: 键盘输入需使用Scanner语句,使用Scanner语句需以下4步骤

    • 导包(可以在第二步创建后按住“Ctrl+shift+O”来自动导包)
      import java.util.Scanner;
    • 创建 Scanner sc = new Scanner (System.in); (sc是对象的名字,只要符合命名规则可更换)
    • 使用(这里介绍的是最简单是使用方法)
      (1) 获取键盘输入的int型数字 int num = sc.nextInt();
      (2) 特殊: 获取键盘输入的字符串 String str = sc.next();
    • 使用完毕,关闭键盘输入 sc.close();(即对象名.close())

    Q2: 如何获得输入正整数的每一位?

    A2: 这里我们需要用到除运算符(“/”)和取余运算符(“%”)

    除运算法(“/”)得到的结果为两数之商 取余运算符(“%”)得到的结果为两数相除的余数
    eg:A/B=商 eg:A%B=A/B的余数

    了解了以上两个运算符,我们来用一个例子具体讲解一下
    获取输入正整数的每一位的步骤:(以12345为例)

    • 第一步:取出个位5:
      我们发现:12345%10=5
      (这里我们用数学来思考12345÷10=1234…5。此过程用计算机实现就需要用“%”)

    • 第二步:取出十位4:
      【这时候你可能会说,小乔我知道啦!用12345%100就可以得到十位数4但实际不是。我们来看看:12345÷100=123…45 所以这里的余数是45并不是4】

      经过观察我们发现:
      1234%10=4(1234÷10=123…4)(1234的由来: 1234=12345/10)

    • 第三步:取出百位3:(还是运用取出十位2的规律)

      123%10=3(123÷10=12…3)(123的由来:123=1234/10)

    • 第四步:取出千位2:(还是运用取出百位3的规律)

      12%10=2(12÷10=1…2)(12的由来:12=123/10)

    • 第五步:取出万位1:(还是运用取出千位2的规律)

      1%10=1(1÷10=0…1)(1的由来:1=12/10)

      到此我们整数的每一位就都取出来了

    我们根据上面的式子总结规律:

    1. 规律:
    • 先用输入的正整数num与10取余,
    • 再将输入的正整数num与10相除

    ( 这里需要注意的是正整数num/10后的结果依然保存在num变量中即num=num/10)

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

     12345%10=5(个位) 12345/10=1234
     1234%10=4(十位)1234/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 QuWei {
    
    	public static void main(String[] args) {
    		int num =0;//将键盘输入的数保存在num变量中
    		int yu=0;
    	//创建
    		Scanner sc = new Scanner (System.in);
    	//使用
    		num=sc.nextInt();//将键盘输入的数保存在num变量中
    	//关闭
    		sc.close();
    		
    	/*	思路:先让num与10取余,
    	再让num与10相除,
    	相除后的结果仍保存在num中即num=num/10(被除数需大于0)
    	*/
    		while(num>0) {
    			yu=num%10;//取余
    			System.out.print(yu+"  ");
    			num=num/10;//相除,让num变量/10,得到的结果再保存到num变量中
    		}		
    	}
    }
    
    

    详解:

    以12345为例:

    num=12345,因为num>0满足while循环的条件所以执行while循环

    while(num>0) {
    			yu=num%10;//取余
    			System.out.print(yu+"  ");
    			num=num/10;//相除,让num变量/10,得到的结果再保存到num变量中
    		}	
    
    1. 第一步:得到个位5
    • yu=num%10 → yu=12345%10=5

    • System.out.print(yu+” ”) → 5

    • num=num/10 → num=12345/10=1234

    1. 第二步:得到十位4(此时num=1234>0所以继续执行while循环)
    while(num>0) {
    			yu=num%10;//取余
    			System.out.print(yu+"  ");
    			num=num/10;//相除,让num变量/10,得到的结果再保存到num变量中
    		}
    
    • yu=num%10 → yu=1234%10=4

    • System.out.print(yu+” ”) → 4

    • num=num/10 → num=1234/10=123

    1. 第三步:得到百位3(此时num=123>0所以继续执行while循环)
    while(num>0) {
    			yu=num%10;//取余
    			System.out.print(yu+"  ");
    			num=num/10;//相除,让num变量/10,得到的结果再保存到num变量中
    		}
    
    • yu=num%10 → yu=123%10=3

    • System.out.print(yu+” ”) → 3

    • num=num/10 → num=123/10=12

    1. 第四步:得到千位2(此时num=12>0所以继续执行while循环)
    while(num>0) {
    			yu=num%10;//取余
    			System.out.print(yu+"  ");
    			num=num/10;//相除,让num变量/10,得到的结果再保存到num变量中
    		}
    
    • yu=num%10 → yu=12%10=2

    • System.out.print(yu+” ”) → 2

    • num=num/10 → num=12/10=1

    1. 第五步:得到万位1(此时num=1>0所以继续执行while循环)
    while(num>0) {
    			yu=num%10;//取余
    			System.out.print(yu+"  ");
    			num=num/10;//相除,让num变量/10,得到的结果再保存到num变量中
    		}
    
    • yu=num%10 → yu=1%10=1

    • System.out.print(yu+” ”) → 1

    • num=num/10 → num=1/10=0

    1. 因为这时num=0不满足while(num>0)这个条件所以退出while循环

      程序结束运行。

    结果:
    在这里插入图片描述

    四、彩蛋

    在这里插入图片描述

  • 相关阅读:
    天梯赛练习2 补题
    QFNU 天梯赛练习 1 补题
    2019 山东省赛 B 题
    CCPC2020 网络赛 总结
    一个比较好看的 Typora 主题
    〔OS〕磁盘调度算法
    〔OS〕页面置换算法
    〔OS〕多线程模拟实现生产者和消费者
    〔OS〕银行家算法
    LCS and LIS
  • 原文地址:https://www.cnblogs.com/Qpgshare/p/12619557.html
Copyright © 2011-2022 走看看