黑马程序员技术交流社区
标题:
循环 中的问题, 谢谢额
[打印本页]
作者:
yekong262
时间:
2014-1-6 10:05
标题:
循环 中的问题, 谢谢额
int temp = 120;
int sum = 0;
while(temp != 0){
sum = sum*10 + temp%10;
temp = temp/10;
}
System.out.println(sum+";");
复制代码
结果是21 是怎么运算的 顺序是什么 谢谢 ,
作者:
王新年
时间:
2014-1-6 10:59
首先判断temp的值等不等与0,不等则计算sum=sum*10+temp%10;在把temp/10的值赋值给temp,然后再判断temp的值等不等于0,重复上述动作直到temp的值等于0退出while循环,打印出sum的值
作者:
猎鹰tianya
时间:
2014-1-6 11:12
本帖最后由 猎鹰tianya 于 2014-1-6 11:25 编辑
由于之循环了三次,所以过程不难写,我写了整个过程,希望对你理解程序有帮助,不多说,请看图:
[attach]33931[/attach]
截图2014-1-6_11-8-4.png
(142.8 KB, 下载次数: 9)
下载附件
2014-1-6 11:25 上传
作者:
胡永城
时间:
2014-1-6 11:15
<b><font size="4"> int temp = 120;
int sum = 0;
while(temp != 0){
sum = sum*10 + temp%10;
temp = temp/10;
}
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:%是取余运算,保留余数。/是除法运算,保留商。
作者:
jibenwujie
时间:
2014-1-6 11:22
程序执行第一次循环:
sum = sum*10 + temp%10;
//sum = 0*10 + 120%10(0) = 0
temp = temp/10;
//temp = 120/10 = 12;
复制代码
程序第二次循环:
sum = sum*10 + temp%10;
//sum = 0*10 + 12%10(2) = 2
temp = temp/10;
//temp = 12/10 = (int)1.2 = 1;
复制代码
第三次循环:
sum = sum*10 + temp%10;
//sum = 2*10 + 1%10(1) = 21
temp = temp/10;
//temp = 1/10 = (int)0.1 = 0;
复制代码
此时程序在此进入循环时,因为temp为0,不满足循环条件,程序结束,sum==21
作者:
范晓冲
时间:
2014-1-6 16:04
本帖最后由 范晓冲 于 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;
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2