黑马程序员技术交流社区
标题:
大家看看下面的这道改错题,这是我找工作时的笔试题
[打印本页]
作者:
邵天强
时间:
2012-11-17 17:10
标题:
大家看看下面的这道改错题,这是我找工作时的笔试题
本帖最后由 邵天强 于 2012-11-17 22:27 编辑
package com.itheima.reflect;
public class Test{
public static void main(String[]args){
for(int i=Integer.MIN_VALUE;i<Integer.MAX_VALUE;i++){
boolean isOdd=isOdd(i);
System.out.println(String.format("i=%d,isOdd=%b", i, isOdd));
}
}
public static boolean isOdd(int num){
return num%2==1;
}
}
大家看一下有什么问题
作者:
许坤
时间:
2012-11-17 17:32
boolean isOdd=isOdd(i); 这是布尔类型的,怎么能在format("i=%d,isOdd=%b", i, isOdd);中通过呢?
作者:
汤瑞贺
时间:
2012-11-17 17:51
运行正常...
作者:
邵天强
时间:
2012-11-17 17:56
汤瑞贺 发表于 2012-11-17 17:51
运行正常...
但是你看结果正确吗?
作者:
殷士剑
时间:
2012-11-17 17:58
当 num 为正数时, num%2 = 1 或者 num%2 = 0;
当 num 位负数时, num%2 = -1 或者 num%2 = 0;
所以,你少考虑了 num%2 = -1 的情况。
作者:
徐军涛
时间:
2012-11-17 18:08
是可以正常运行的 System.out.println(String.format("i=%d,isOdd=%b", i, isOdd));
String的有2个格式化输出,此题调用的是format(String format, Object... args)
思来想去,逻辑没问题;就可能是语法的问题,可是这里面就牵涉到了自动拆装箱和多态:格式里面接受的是Object 但是你传入的是i, isOdd
JDK1.5后的编译是不会出问题的
这时,我就有疑问了,你什么时间面试的?
作者:
邵天强
时间:
2012-11-17 18:23
这是今年巨人网络校招的一道改错题,我当时也是这样修改的return num%2!=0,那时我也想到另一个方法:
return(num&1)==1
,但是那时不敢确定对不对,没有往上写,我感觉还可以,不知道大家怎样想的
作者:
孟伟娟
时间:
2012-11-17 20:21
这个题判断是不是基数,需要分两种情况,当i<0时,返回i %2 == -1;当i >0时,返回i%2 ==1。
public static boolean isOdd(int num){
if(i < 0)
return num%2==-1;
else
return num%2== 1;
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2