从键盘输入一个正整数java_【视频+图文】Java经典基础练习题(四):键盘输入一个正整数,获取这个正整数的每一...

85b48b063899bf6f6d667304f1ef6b71.png

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

我们需要根据我们的思路写出后通过debug模式

找到不足再进行更改

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

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

一、视频讲解3e1ae9c32ea9d2c94292b8a8ddac39ed.png

8b22ab26ef493287a87a82da4f4b89c6.png

二、思路分析

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)

2.规律:我们可以看到:最后一次循环被除数为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=08b22ab26ef493287a87a82da4f4b89c6.png

三、代码+详解+结果

代码:

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变量中

}第一步:得到个位5yu=num%10 → yu=12345%10=5

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

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

2.第二步:得到十位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

3.第三步:得到百位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

4.第四步:得到千位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

5.第五步:得到万位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

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

程序结束运行。

结果:

b1ad613642ef073013c02738a0c21543.png

四、彩蛋

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值