读书人

java解惑(谜题61。)

发布时间: 2012-12-19 14:13:14 作者: rapoo

java解惑(谜题61。。。)
谜题61:日期游戏


打印出的结果是2000 1。
第一个bug就是cal.set(1999, 12,31);当月份以数字来表示时,习惯上我们将第一个月赋值为1。遗憾的是,Date将第一个月表示为0。因此设置为了13个月的第31天。Calendar类替换为下一年的第一个月。修改的最好方法是:使用Calendar专有的常量。cal.set(1999, Calendar.DECEMBER,31);
第二个bug就是Date.getDay返回的是Date实例所表示的星期日期,而不是月份日期。这个返回值是基于0的,从星期天算起。
总之,在使用Calendar和Date时,一定要查看API文档。
谜题62:名字游戏


该程序抛出java.lang.ArrayIndexOutOfBoundsException异常。abs方法几乎总是返回它的参数的绝对值,但是在一种情况下,它做不到这一点。"如果参数等于Integer.MIN_VALUE,那么产生的结果与该参数相同,它是一个负数。”本题教训:Math.abs不一定保证一定会返回非负的结果。

读书人网 >编程

热点推荐