求助 关于Calendar的问题
缥渺孤鸿 2011-11-19 12:38:08 请设计和实现一个日历输出程序, (1)用户输入一个月份,给出当年某月的日历,日历要求每个月显示4~5行,每行显示7列,星期一到星期日 (2)用户输入一个年份,系统自动输出一年的详细的日历,要求每行同时显示三个月,月日历显示方式同(1)。
import java.util.*;
public class Question3{
static int[] day={31,28,31,30,31,30,31,31,30,31,30,31};
static String[] weeks={"星期天","星期一","星期二","星期三","星期四","星期五","星期六"};
public static void main(String[] args){
try{
Scanner scan=new Scanner(System.in);
System.out.println("请入一个年份和一个月份:");
int year=scan.nextInt();
int month=scan.nextInt();
monthCalendar(year,month-1);
System.out.println("请入一个年份:");
year=scan.nextInt();
yearCalendar(year);
}
catch(Exception e){
e.printStackTrace();
}
}
public static void monthCalendar(int year,int month){
Calendar c=GregorianCalendar.getInstance();
boolean isLeapYear=false;
if(year%400==0||year%4==0&&year%100!=0){
isLeapYear=true;
day[1]=29;
}
System.out.println("------------"+year+"年"+(month+1)+"月------------");
System.out.println("SUN MON TUE WED THU FRI SAT");
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month);
c.set(Calendar.DATE,1);
int first=c.get(Calendar.DAY_OF_WEEK);
int i;
for(i=1;i <first;i++) System.out.print(" ");
for(i=1;i <=day[month];i++){
if(i <10) System.out.print(" ");
System.out.print(" "+i);
System.out.print(" ");
if(first++%7==0) System.out.println();
}
System.out.println("");
if(isLeapYear) day[1]=28;
}
public static void yearCalendar(int year){
Calendar c=GregorianCalendar.getInstance();
boolean isLeapYear=false;
if(year%400==0||year%4==0&&year%100!=0){
isLeapYear=true;
day[1]=29;
}
for(int month=0;month<12;month++){
System.out.println("------------"+year+"年"+(month+1)+"月------------");
System.out.println("SUN MON TUE WED THU FRI SAT");
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month);
c.set(Calendar.DATE,1);
int first=c.get(Calendar.DAY_OF_WEEK);
int i;
for(i=1;i <first;i++) System.out.print(" ");
for(i=1;i <=day[month];i++){
if(i <10) System.out.print(" ");
System.out.print(" "+i);
System.out.print(" ");
if(first++%7==0) System.out.println();
}
System.out.println("");
if(isLeapYear) day[1]=28;
}
}
}
请问怎么样才能让3个月历在同一行 能帮我改一下吗 谢谢了