这是我写的一个日历代码
public class VisualCalendar {
public static void main(String[] args){
String str = "2017-4-8";
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
Date d = df.parse(str);
Calendar c = new GregorianCalendar();
c.setTime(d);
c.set(Calendar.DATE, 1);//将日期设为当月一号
c.get(Calendar.DAY_OF_WEEK);//这一天是一周中的第几天,这个方法的第一次调用
int maxDay=c.getActualMaximum(Calendar.DATE);//确定当月最大天数
System.out.println("日\t一\t二\t三\t四\t五\t六");
for(int i=1;i<c.get(Calendar.DAY_OF_WEEK);i++){
System.out.print("\t");
}
for(int i=1;i<=maxDay;i++){
System.out.print(i+"\t");
int w=c.get(Calendar.DAY_OF_WEEK);//这里调用一个方法得到的值好像必须要用一个变量保存,不然不对
if(w==Calendar.SATURDAY){
System.out.println();
}
c.add(Calendar.DATE, 1);
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
然后我发现了个问题,就是 int w=c.get(Calendar.DAY_OF_WEEK)这段代码;如果不用w保存这个方法的调用,在下文中直接用if(c.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY)结果就不对,但是如果提前在第一次调用这个方法时就用w将这个方法调用的结果保存的话,结果又变得很奇怪
这到底是什么情况啊,真的理解不能。。。。
第二段:
```public class VisualCalendar {
public static void main(String[] args){
String str = "2017-4-8";
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
Date d = df.parse(str);
Calendar c = new GregorianCalendar();
c.setTime(d);
c.set(Calendar.DATE, 1);//将日期设为当月一号
int w=c.get(Calendar.DAY_OF_WEEK);//这一天是一周中的第几天
int maxDay=c.getActualMaximum(Calendar.DATE);//确定当月最大天数
System.out.println("日\t一\t二\t三\t四\t五\t六");
for(int i=1;i<w;i++){
System.out.print("\t");
}
for(int i=1;i<=maxDay;i++){
System.out.print(i+"\t");
//这里调用一个方法得到的值好像必须要用一个变量保存,不然不对
if(w==Calendar.SATURDAY){
System.out.println();
}
c.add(Calendar.DATE, 1);
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}