import java.text.DateFormatSymbols;
import java.util.*;
public class Demo01 { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
GregorianCalendar d=new GregorianCalendar();
int today=d.get(Calendar.DAY_OF_MONTH);
int month=d.get(Calendar.MONTH);
d.set(Calendar.DAY_OF_MONTH,1);
int weekday=d.get(Calendar.DAY_OF_WEEK);
int firstDayOfWeek=d.getFirstDayOfWeek();
int indent=0;
while(weekday!=firstDayOfWeek){
indent++;
d.add(Calendar.DAY_OF_MONTH,-1);
weekday=d.get(Calendar.DAY_OF_WEEK);
}
String[] weekdayNames=new DateFormatSymbols().getShortWeekdays();
do{
System.out.printf("%4s",weekdayNames[weekday]);
d.add(Calendar.DAY_OF_MONTH, 1);
weekday=d.get(Calendar.DAY_OF_WEEK);
}
while(weekday!=firstDayOfWeek);
System.out.println();
for(int i=0;i<=indent;i++)
System.out.print(" ");
d.set(Calendar.DAY_OF_MONTH, 1);
do{
int day=d.get(Calendar.DAY_OF_MONTH);
System.out.printf("%3d", day);
if(day==today)System.out.print("*");
else System.out.print(" ");
d.add(Calendar.DAY_OF_MONTH, 1);
weekday=d.get(Calendar.DAY_OF_WEEK);
if(weekday==firstDayOfWeek)System.out.println();
}
while(d.get(Calendar.MONTH)==month);
if(weekday!=firstDayOfWeek)System.out.println();
}}
其中主要就以下代码,哪位大侠解释一下:
1,int firstDayOfWeek=d.getFirstDayOfWeek();
int indent=0;
while(weekday!=firstDayOfWeek){
indent++;
d.add(Calendar.DAY_OF_MONTH,-1);
weekday=d.get(Calendar.DAY_OF_WEEK);
}
就是不太明白d.add(Calendar.DAY_OF_MONTH,-1);具体什么意思,为什么-1呢?2,String[] weekdayNames=new DateFormatSymbols().getShortWeekdays();
do{
System.out.printf("%4s",weekdayNames[weekday]);
d.add(Calendar.DAY_OF_MONTH, 1);
weekday=d.get(Calendar.DAY_OF_WEEK);
}
while(weekday!=firstDayOfWeek);
System.out.println();
其实还是add()方法问题,看了api后还是有点疑惑,到底是哪里增加或减少,减少的是什么呢?整个循环看到底都是问号,哪位大侠解释解释啊?
import java.util.*;
public class Demo01 { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
GregorianCalendar d=new GregorianCalendar();
int today=d.get(Calendar.DAY_OF_MONTH);
int month=d.get(Calendar.MONTH);
d.set(Calendar.DAY_OF_MONTH,1);
int weekday=d.get(Calendar.DAY_OF_WEEK);
int firstDayOfWeek=d.getFirstDayOfWeek();
int indent=0;
while(weekday!=firstDayOfWeek){
indent++;
d.add(Calendar.DAY_OF_MONTH,-1);
weekday=d.get(Calendar.DAY_OF_WEEK);
}
String[] weekdayNames=new DateFormatSymbols().getShortWeekdays();
do{
System.out.printf("%4s",weekdayNames[weekday]);
d.add(Calendar.DAY_OF_MONTH, 1);
weekday=d.get(Calendar.DAY_OF_WEEK);
}
while(weekday!=firstDayOfWeek);
System.out.println();
for(int i=0;i<=indent;i++)
System.out.print(" ");
d.set(Calendar.DAY_OF_MONTH, 1);
do{
int day=d.get(Calendar.DAY_OF_MONTH);
System.out.printf("%3d", day);
if(day==today)System.out.print("*");
else System.out.print(" ");
d.add(Calendar.DAY_OF_MONTH, 1);
weekday=d.get(Calendar.DAY_OF_WEEK);
if(weekday==firstDayOfWeek)System.out.println();
}
while(d.get(Calendar.MONTH)==month);
if(weekday!=firstDayOfWeek)System.out.println();
}}
其中主要就以下代码,哪位大侠解释一下:
1,int firstDayOfWeek=d.getFirstDayOfWeek();
int indent=0;
while(weekday!=firstDayOfWeek){
indent++;
d.add(Calendar.DAY_OF_MONTH,-1);
weekday=d.get(Calendar.DAY_OF_WEEK);
}
就是不太明白d.add(Calendar.DAY_OF_MONTH,-1);具体什么意思,为什么-1呢?2,String[] weekdayNames=new DateFormatSymbols().getShortWeekdays();
do{
System.out.printf("%4s",weekdayNames[weekday]);
d.add(Calendar.DAY_OF_MONTH, 1);
weekday=d.get(Calendar.DAY_OF_WEEK);
}
while(weekday!=firstDayOfWeek);
System.out.println();
其实还是add()方法问题,看了api后还是有点疑惑,到底是哪里增加或减少,减少的是什么呢?整个循环看到底都是问号,哪位大侠解释解释啊?
2.第二个add其实是在不断的增加日子来输出而已你应该先明白这个程序是要干嘛的,他不过是想象电脑一样的输出这个月的日历表而已,最好的方法就是自己debug一下,然后再看看API的说明文档,就可以了。我也是新手,也是看着这个努力学习Java呢。呵呵!