黑马程序员技术交流社区

标题: 一段代码的输出结果有疑问? [打印本页]

作者: 马蒙蒙    时间: 2011-7-29 16:22
标题: 一段代码的输出结果有疑问?
如下代码:
int i = 3;
int j = 0;
float k = 3.2F;
long m = -3;
if (Math.ceil(i) < Math.floor(k))
if (Math.abs(i) == m)
System.out.println(i);
else
System.out.println(j);
else
System.out.println(Math.abs(m) + 1);怎么结果是4呢?麻烦高手相助
作者: 匿名    时间: 2011-7-29 18:39
if (Math.ceil(i) < Math.floor(k))
Math.cell(i)取得的是double类型的最大整数为3.0
Math.floor(k)取得的是double类型的最小整数为3.0
if (Math.abs(i) == m)
Math.abs(i)为取绝对值为3
俩个if语句均不成立,所以执行第三条输出语句,得出结果为4

遇到不会的类似的问题可以查API
作者: 匿名    时间: 2011-7-29 20:52
Math.ceil(i) 等于 Math.floor(k)
直接执行对应的else  System.out.println(Math.abs(m) + 1);
所以是4

这问题调式最方便了,要不就System.out.println()所有的数,或者看看api对Math的解释。
作者: 匿名    时间: 2011-7-30 10:53
标题: 回复 楼主 的帖子
Math.ceil(i) 的意思是以负无穷方向取不小于i的最小值,此处就是3了
Math.floor(k) 的意思是以正无穷方向取不超过k的最大值,此处也为3了
只执行了这句:System.out.println(Math.abs(m) + 1);,所以结果是4
就象李龙说的,你加个System.out.println(Math.ceil(i))也就很好发现的,要会用方法测试




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2