方法一:
import java.util.Calendar;
import java.util.Scanner;
class Demo {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("请输入年份:");
int year = scan.nextInt();
System.out.print("请输入月份:");
int month = scan.nextInt();
System.out.println("
"+year + "年" + month + "月
");
System.out.println("周日 周一 周二 周三 周四 周五 周六");
Calendar c = Calendar.getInstance();
c.set(year, month-1, 1);
int weekday = c.get(Calendar.DAY_OF_WEEK);
int maxDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);
int temp = 0;
for (int i = 1; i < weekday; i++){
System.out.print("* ");
temp++;
}
for (int i = 1; i <= maxDay; i++){
System.out.print(i + " ");
temp++;
if (temp%7 == 0){
System.out.println();
}
}
}
}
方法二:
public class Demo4 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Demo4 demo = new Demo4();
demo.show(1900,1);
}
//定义一个工具方法:判断平年还是闰年
public boolean isLeapYear(int year){
if(year % 400 == 0 || (year % 4==0 && year % 100 != 0)){
return true;
}
return false;
}
//计算输入年份下,月份的总天数 1900
public int getTotalDateFrom(int year , int month){
//1.定年份的总天数
int totalDate = 0;//1900到你输入的年份的总天数 2016 1900 - 1903 = 3
for(int i= 1900 ; i < year ;i++){
if(isLeapYear(i)){ // 闰年
totalDate += 366;
}else {
totalDate += 365;
}
}
//2.计算月份的天数
for(int i = 1 ; i< month ;i++){
totalDate += getDayOfMonth(year, i);
}
return totalDate;
}
public int getDayOfMonth(int year , int month){
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
case 4:
case 6:
case 9:
case 11:
return 30;
case 2:
if(isLeapYear(year)){
return 29;
}else {
return 28;
}
default:
return 30;
}
}
public int printSpace(int year , int month){
return getTotalDateFrom(year, month) % 7;
}
public void print(int year , int month){
int countSpac = printSpace(year, month) + 1; // 空格的个数
int count = 0; //定义一个计数
for(int i = 1; i<=countSpac; i++){
count++;
System.out.print(" ");
}
//2.打印日期
for(int i = 1 ; i<=getDayOfMonth(year, month);i++){
if(count % 7 == 0){
System.out.println();
}
count++;
System.out.print(i+" ");
}
}
public void show(int year , int month){
System.out.println("******************"+year+"****"+month+"***************");
System.out.println("======================================================");
System.out.println("日 一 二 三 四 五 六");
System.out.println("======================================================");
print(year, month);
System.out.println();
}
}