刷题的时候总会遇到,我需要这个数的个位、十位,分别处理。但是我每次遇到都会迷糊,所以写篇博文用来提醒自己。
单纯的情况
两位数
比如做题的时候,遇到一个十位数,比如。
- 个位:
15 % 10 = 5 - 十位:
15 / 10 = 1看样子也挺简单的对吗。我们再来看三位数的。
三位数
这次举例123
- 个位:
123 % 10 = 3 - 十位:
123 / 10 = 12, 12 % 10 = 2 - 百位:
12 / 10 = 1
我们发现三位数的时候就开始有点点混乱了,那我们还是要思考一个通用的方法,无论几位数,直接套方法就走。
通用的方法
先从低位获取
通用方法很简单,就是先计算位数最低的数,再去掉最后一位。在这个步骤上进行循环即可。
int num = 123456;
int num_temp = num; // 保存数字,不破坏原本变量
while(num_temp != 0) {
System.out.print(num_temp % 10 + " "); // 获取低位
num_temp /= 10; // 去掉低位
}
最后输出6 5 4 3 2 1
先从高位获取
这样挺好,但是如果我们非要先从高位获取,该怎么做?
也可以做,但是稍稍麻烦点。 首先,获取数字的长度len;其次,对数字进行整除即可获得高位,再进行取余来去掉高位。
让我们看看代码吧。
int num = 123456;
int num_temp = num; // 保存数字,不破坏原本变量
int len = (num_temp+"").length(); // 获取长度
for (int i=len; i>=1; i--) {
System.out.print(num_temp / (int)Math.pow(10, i-1) + " "); // 获取最高位
num_temp %= (int)Math.pow(10, i-1); // 去掉最高位;
}
最后输出1 2 3 4 5 6
最后一点题外话
我在编辑这段博文的时候,运行了代码,遇到了很多坑,顺便写出来
- 当你想实现打印一个数再带着一个空格的时候,你需要
15+" ",而不是15+' '。前者是字符串拼接,后者是数字加上空格的ANSI码!! - Java很多方法都是在类中实现并封装,不像python可以直接用。有的比赛,比如牛客网那种编辑器,你需要提前记住哪个方法在哪个类里,不然笔试的时候就等哭吧。T_T
- 有些东西只能通过多刷题才能重视并了解。比如精度的问题,比如如何求解数字长度、数字每位分离等等。