日期:2014-05-20  浏览次数:20795 次

system.out.printf("%3d",day)中的3是什么意思
system.out.printf( "%3d ",day)中的3是什么意思?请讲解一下printf的用法

------解决方案--------------------
具体prinf的用法我也不清楚,C里面的东西。不过3的意思我明白,意思是输出的值占3个位置。
例如:123,_23,__3
(“_”表示占一个位置)
------解决方案--------------------
如果输出不足3个的话 在前面补空格
------解决方案--------------------
这个不用算1号就是这个月第一天
------解决方案--------------------
第一个问题:

%3d,中的 3 是整型数据的占位宽度。也就是说不足 3 位的数字前用空格补足三位,也就是右对齐;如果是 -3,则在后面添加空格补足三位,左对齐。如果超过 3 位的话,则是实际宽度来输出。这些是 JDK 1.5 的新特性之一,方便对控制台输出进行格式化,具体的参数可以参看 java.util.Formatter 的 API。


第二个问题:

d.set(Calendar.DAY_OF_MONTH,1); 这样设置并不是设置当前日期为这个月的第一天,而是将日期设为当前月的 1 号。

fantasybob 的回答可能有点误区,for 并不同查看当前日期是星期几,int weekDay=d.get(Calendar.DAY_OF_WEEK); 才是获得当前月的 1 号是星期几,而 for 是为了在前面输出空格的,比如 2007-08-01 是星期三,那在日历中它前面的星期日至星期二就是空档,for 就是用来产生这些空档的。

后面的 do...while 循环是为了输出当前月的日历使用的,d.add(Calendar.DAY_OF_MONTH,1); 是为了增加一天。当日期已到 2007-08-31 时,再加一天的话,日期就变成了 2007-09-01 此时循环就结束了。