A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

4 个回复

倒序浏览
count经过第两次的循环已经变为了100,第三次循环的时候(也就是最后一次循环),x=123/100的结果为1(因为x为int类型),再用1来模10的结果就是1,关于模符号的使用有个小技巧:任何数模上一个比它大的数,结果都为自身。希望对你有帮助。


求技术分~

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
第三次循环时,输出为123/100%10  先运算为1%10  再运算为1  取模运算的特点 楼上解释的很详细了

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
在进行第一次循环时,由于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),循环结束。
写的比较麻烦,不知能否帮助楼主理解。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
再提醒楼主,如果一个数%10=0,那这个数就是10的倍数,而楼主要拆分这个整数,你都是/count%10的结果。count随着循环每次*10,但是这个整数的位数也在增加,最后要%10的数肯定是个位数,个位数%10就不存在0的结果了

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马