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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yekong262 中级黑马   /  2014-1-6 10:05  /  1118 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. int temp = 120;
  2.                  int sum = 0;
  3.                 while(temp != 0){
  4.                         sum = sum*10 + temp%10;
  5.                                                 temp = temp/10;

  6.                         }
  7.                                                 System.out.println(sum+";");
复制代码
结果是21 是怎么运算的  顺序是什么 谢谢 ,

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 神马都是浮云

查看全部评分

5 个回复

倒序浏览
首先判断temp的值等不等与0,不等则计算sum=sum*10+temp%10;在把temp/10的值赋值给temp,然后再判断temp的值等不等于0,重复上述动作直到temp的值等于0退出while循环,打印出sum的值

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 很给力!

查看全部评分

回复 使用道具 举报
本帖最后由 猎鹰tianya 于 2014-1-6 11:25 编辑
由于之循环了三次,所以过程不难写,我写了整个过程,希望对你理解程序有帮助,不多说,请看图:

截图2014-1-6_11-8-4.png (142.8 KB, 下载次数: 1)

截图2014-1-6_11-8-4.png

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
  1. <b><font size="4"> int temp = 120;
  2. int sum = 0;
  3. while(temp != 0){
  4. sum = sum*10 + temp%10;
  5. temp = temp/10;
  6. }
  7. System.out.println(sum+";");</font></b>
复制代码

总共循环了三次。

第一次,temp=120 != 0,
执行循环。
sum*10=0。temp%10=0。所以sum=0。
temp/10=12。所以temp=12。
第二次循环temp=12!=0,
执行循环。
sum*10=0。temp%10=2。所以sum=2。
temp/10=1。所以temp=1。
第三次循环temp=1!=0,
执行循环。
sum*10=20。temp%10=1。所以sum=21。temp/10=0。所以temp=0。temp=0满足不满足条件,循环停止System.out.println(sum+";");输出21.
ps:%是取余运算,保留余数。/是除法运算,保留商。

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 赞一个!

查看全部评分

回复 使用道具 举报
程序执行第一次循环:
  1. sum = sum*10 + temp%10;
  2.                 //sum = 0*10 + 120%10(0) = 0
  3.                 temp = temp/10;
  4.                 //temp = 120/10 = 12;
复制代码

程序第二次循环:
  1. sum = sum*10 + temp%10;
  2.                 //sum = 0*10 + 12%10(2) = 2
  3.                 temp = temp/10;
  4.                 //temp = 12/10 = (int)1.2 = 1;
复制代码
第三次循环:
  1. sum = sum*10 + temp%10;
  2.                 //sum = 2*10 + 1%10(1) = 21
  3.                 temp = temp/10;
  4.                 //temp = 1/10 = (int)0.1 = 0;
复制代码
此时程序在此进入循环时,因为temp为0,不满足循环条件,程序结束,sum==21



评分

参与人数 1技术分 +1 收起 理由
FFF + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
本帖最后由 范晓冲 于 2014-1-6 16:43 编辑

  当程序执行到03行时,首先进行判断:temp=120!=0符合条件
=>于是执行04行:sum=sum*10+temp%10=0*10+120%10=0+0=0;
=>执行05行程序:temp=temp/10=120/10=12;


=>再次执行03行,再次进行判断:temp=12!=0,返回值是true
=>于是再次执行04行:sum=sum*10+temp%10=0*10+12%10=0+2=2;
=>于是再次执行05行:temp=temp/10=12/10=1


=>程序再次回到03行,再次对条件进行判断:temp=1!=0,返回值是true,符合条件
=>于是再次执行04行:sum=sum*10+temp%10=2*10+1%10=20+1=21;
=>于是再次执行05行:temp=temp/10=1/10=0;






=>程序再次回到03行,再次对条件进行判断:temp=0,返回值是false,不符合条件


=>程序跳出while循环,执行08行,输出内容为:21;

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