拆数,是学习语言基础时,非常适合且不难的综合案例,涉及整除、取余,循环、辗转相除等基本思想。
此文简述过程,从顺序结构,循环重构。
明确问题:拆数是指,给定一个正整数,获取其各个数位上的数字,比如数字 1234,其各个数位上的数字分别是:4、3、2、1
/*
* 1、需求:拆数:给定一个正整数,获取其个位置上的数字
* 例如:给定一个数字1234,分别获取得到4、3、2、1
*
* 2、分析:分析问题,得知需要使用'%'获取个位数字,
* 使用'/'将问题阈缩小,直至一位0
*
* 3、实现:首先实现例子中的问题,使用简单的顺序结构
* 再将问题推向一般化,重构代码,实现代码的可重用性
*
* 4、编码
*/
public class Demo
{
public static void main(String[] args)
{
int num = 1234;
/*
// 1、获取给定值的副本,避免改变原始值
int numCopy = num;
// 2、获取个位数字 ge
int ge = numCopy % 10;
// 3、打印个位数字
System.out.println(ge);
// 4、缩小问题阈
numCopy /= 10; // numCopy = 123
// 重复上述步骤,分别获取 十位数字 shi、百位数字 bai、千位数字 qian
int shi = numCopy % 10;
System.out.println(shi);
numCopy /= 10;
int bai = numCopy % 10;
System.out.println(bai);
numCopy /= 10;
int qian = numCopy % 10;
System.out.println(qian);
numCopy /= 10;
*/
/* 根据上述简单实现的代码,总结规律,发现其中主要的核心代码是重复
主要是以下是三步:
1、取余获取指定位上的数字
2、打印该位置上面的
3、缩小问题阈
问题的终止条件是 numCopy 为0
可以使用while循环改进代码
while(num!=0)
{
int wei = num % 10;
System.out.println(wei);
num /= 10;
}
同时可以将这个完成拆数功能的代码,封装成函数 void chaiShu(int num)
*/
// 调用函数chaiShu,实现需求
chaiShu(num);
}
// chaiShu函数功能:输入参数num,获取各个位置上的数字
public static void chaiShu(int num)
{
while(num!=0)
{
int wei = num % 10;
System.out.println(wei);
num /= 10;
}
}
}