(显示日历)重写程序清单6-12 (参见教材P194) 中的PrintCalendar类,使用Calendar 和GregorianCalendar类显示一个给定 月份的日历。你的程序从命令行得到月份和年份的 输入,例如: java Exercisel3_ 04 5 2016 这个输入会显示如下图中的日历。也可以不输入年份来运行程序。这种情况下,年份就 是当前年份。如果不指定月份和年份来运行程序,那么就是指当前月份。
时间: 2023-12-03 13:45:06 浏览: 188
java API 在包java.util中有一个GregorianCalendar类,使用它可以得到一年内某个月的日历.zip
以下是重写后的程序清单:
```java
import java.util.Calendar;
import java.util.GregorianCalendar;
public class PrintCalendar {
public static void main(String[] args) {
int month, year;
if (args.length == 2) {
month = Integer.parseInt(args[0]);
year = Integer.parseInt(args[1]);
} else if (args.length == 1) {
month = Integer.parseInt(args[0]);
year = Calendar.getInstance().get(Calendar.YEAR);
} else {
Calendar now = Calendar.getInstance();
month = now.get(Calendar.MONTH) + 1;
year = now.get(Calendar.YEAR);
}
printMonthCalendar(month, year);
}
public static void printMonthCalendar(int month, int year) {
Calendar cal = new GregorianCalendar(year, month - 1, 1);
int numOfDays = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
int startDay = cal.get(Calendar.DAY_OF_WEEK);
System.out.println(" Sun Mon Tue Wed Thu Fri Sat");
for (int i = 1; i < startDay; i++) {
System.out.print(" ");
}
for (int i = 1; i <= numOfDays; i++) {
if (i < 10) {
System.out.print(" " + i);
} else {
System.out.print(" " + i);
}
if ((i + startDay - 1) % 7 == 0) {
System.out.println();
}
}
}
}
```
这个程序接受从命令行得到的月份和年份的输入,然后使用 `Calendar` 和 `GregorianCalendar` 类来计算并打印日历。如果只给出月份,则默认使用当前年份。如果没有任何参数,则默认使用当前月份和当前年份。
阅读全文