public class ShowDate { public static void main(String[] args){ Scanner input=new Scanner(System.in); System.out.println("输入查询的年份:"); int year=input.nextInt(); System.out.println("输入查询的月份:"); int month=input.nextInt(); //将用户输入的年份和月份组成一个日期字符串 String dateText=year+"-"+month+"-1"; //将日期字符串转为date类型 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-M-d"); try { Date date=sdf.parse(dateText); //获取当月的第一天的星期数据 int day = date.getDate(); //获取本月的总天数 Calendar ca=Calendar.getInstance(); //将date类型数据对应的时间设置到calendar类型中 ca.setTime(date); //在当前的月份上+1 ca.add(Calendar.MONTH,1); //日期-1 ca.add(Calendar.DAY_OF_MONTH,-1); //从ca中获取出当前的日期 当前的日期就是输入这个月的最大天数 int days=ca.get(Calendar.DAY_OF_MONTH); System.out.println("\t\t"+year+"年"+month+"月"); System.out.println("=============================="); System.out.println("日\t一\t二\t三\t四\t五\t六"); //定义输出\t的循环 //根据某月第一天的星期数值输出对应数量的\t //定义一个整数用来统计输入的次数 int sum=0; for (int i=0;i<day;i++){ sum++; System.out.print("\t"); } //定义第二个循环输出当月的所有日期 for (int i=1;i<=days;i++){ System.out.print(i+"\t"); sum++; if (sum%7==0){ System.out.println(); } } } catch (ParseException e) { e.printStackTrace(); } } }