黑马程序员技术交流社区

标题: 任意整数拆分问题,知道的请给讲解下一个小知识点 [打印本页]

作者: app297    时间: 2014-2-19 22:22
标题: 任意整数拆分问题,知道的请给讲解下一个小知识点
  1. public class IntSplit {
  2. static void main(String[] args) {
  3.                 int x = 123;
  4.                 String s = Integer.toString(x);  //为获取数字位数做准备
  5.                 int cont = 10 ; //记录被除数
  6.                 //整数拆分
  7.                 for (int i = 1; i <= s.length(); i++) {
  8.                         if(i == 1){
  9.                                 System.out.println(x % 10);
  10.                                 continue;
  11.                         }
  12.                         System.out.println(x / cont % 10);
  13.                         //谁能告诉我下。这里最后一次循环 为什么 不是 0而是 1?
  14.                         cont = cont * 10;
  15.                 }
  16.         }
  17. }
复制代码

作者: 徐老爹    时间: 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