我是初学者。求一个JAVA编写的日历,要控制台形式DOS下显示的哈。 
要求(1)命令行参数输入月份 和年份,显示相应的月份日历。(2)没有输入就默认显示当前月份和年份。 
显示样式我就不用说了,会写的自然知道。 ———————————————————————————————— 
顺便附上我写的程序,有空的朋友就顺便看看,修正一下。没空就不用看了。这是有问题的,1:因为我不知道怎么得出一个月开始有几个空格,所以胡乱用的DAY_OF_WEEK。 2:然后控制台输入参数获取日历总是有异常。 
文件名:mainClass.java import java.util.Calendar;class CalendarList{
Integer year,month;
int dayNum,i,num,count=0;
Calendar objCalendar;
int[] arrDayNum={31,28,31,30,31,30,31,31,30,31,30,31};
CalendarList(){
objCalendar=Calendar.getInstance();
this.year=objCalendar.get(Calendar.YEAR);
this.month=objCalendar.get(Calendar.MONTH);
}
CalendarList(String  args0,String args1){
this.year=Integer.valueOf(args1);
this.month=Integer.valueOf(args0);
objCalendar.set(year,month);
}
void display(){
System.out.println("\t\t\t"+year+"年"+(month+1)+"月");
System.out.println("日\t一\t二\t三\t四\t五\t六");
num=objCalendar.get(Calendar.DAY_OF_WEEK_IN_MONTH);
for (i=1;i<=12;i++){
if (i==month){
dayNum=arrDayNum[i];
break;
}
}
for(i=1;i<num;i++){
System.out.print(" \t");
count++;
}
for (i=1;i<=dayNum;i++){
System.out.print(i+"\t");
count++;
if(count==7){
System.out.println();
count=0;
}
}
}
}
public class mainClass { public static void main(String[] args) { CalendarList objCalendar0=new CalendarList();//这个能显示
                CalendarList objCalendar1=new CalendarList(args[0],args[1]);//用参数就会异常
                objCalendar0.display();
objCalendar1.display();
}}

解决方案 »

  1.   

    2:然后控制台输入参数获取日历总是有异常。CalendarList(String     args0,String   args1){ 
    this.year=Integer.valueOf(args1); 
    this.month=Integer.valueOf(args0); 
    objCalendar.set(year,month); 
    } objCalendar还没有初始化,是空的另,objCalendar.set(year, month)这个方法也用错了,你查一下它的文档,会看到两个参数的set()方法,不是这么用的。另,int[] arrDayNum = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };你写死了2月是28天,如果是闰年,怎么办?