黑马程序员技术交流社区
标题:
任意整数拆分问题,知道的请给讲解下一个小知识点
[打印本页]
作者:
app297
时间:
2014-2-19 22:22
标题:
任意整数拆分问题,知道的请给讲解下一个小知识点
public class IntSplit {
static void main(String[] args) {
int x = 123;
String s = Integer.toString(x); //为获取数字位数做准备
int cont = 10 ; //记录被除数
//整数拆分
for (int i = 1; i <= s.length(); i++) {
if(i == 1){
System.out.println(x % 10);
continue;
}
System.out.println(x / cont % 10);
//谁能告诉我下。这里最后一次循环 为什么 不是 0而是 1?
cont = cont * 10;
}
}
}
复制代码
作者:
徐老爹
时间:
2014-2-19 23:51
count经过第两次的循环已经变为了100,第三次循环的时候(也就是最后一次循环),x=123/100的结果为1(因为x为int类型),再用1来模10的结果就是1,关于模符号的使用有个小技巧:任何数模上一个比它大的数,结果都为自身。希望对你有帮助。
求技术分~
作者:
松涛小玮
时间:
2014-2-20 00:13
第三次循环时,输出为123/100%10 先运算为1%10 再运算为1 取模运算的特点 楼上解释的很详细了
作者:
liugy
时间:
2014-2-20 00:21
在进行第一次循环时,由于if(i==1)后面的continue存在,只执行了 if(i==1) 内的输出语句(输出结果为:3)就跳回for()循环条件到进行第二次循环,第二次循环时,直接执行System.out.println(x / cont % 10); (输出结果为:2),输出后cont值也变为了100;然后执行第三次循环,同样直接执行语句System.out.println(x / cont % 10); (输出结果为:1),循环结束。
写的比较麻烦,不知能否帮助楼主理解。
作者:
迦罗叶
时间:
2014-2-20 00:34
再提醒楼主,如果一个数%10=0,那这个数就是10的倍数,而楼主要拆分这个整数,你都是/count%10的结果。count随着循环每次*10,但是这个整数的位数也在增加,最后要%10的数肯定是个位数,个位数%10就不存在0的结果了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2