import java.util.*;public class makeweeks { public static void main(String[] args) {
// TODO 自动生成方法存根
Scanner input = new Scanner(System.in);
System.out.print("请输入年份:");
int year = input.nextInt();
System.out.print("请输入月份:");
int month = input.nextInt();
int days = 0;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days += 31;
break;
case 4:
case 6:
case 9:
case 11:
days += 30;
break;
case 2:
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
days += 29;
} else {
days += 28;
}
break;
default:
System.out.println("您输入的月份有错,请重新输入!");
}
System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
int firstDayofMonth = (1 + days)%7;
for (int nullNo = 0; nullNo <firstDayofMonth ; nullNo++) {
System.out.print("\t");
}
for (int i = 1; i <= days; i++) {
System.out.print(i);
if ((i + days) % 7 == 6) {
System.out.print("\n");
} else {
System.out.print("\t");
}
} }}
// TODO 自动生成方法存根
Scanner input = new Scanner(System.in);
System.out.print("请输入年份:");
int year = input.nextInt();
System.out.print("请输入月份:");
int month = input.nextInt();
int days = 0;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days += 31;
break;
case 4:
case 6:
case 9:
case 11:
days += 30;
break;
case 2:
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
days += 29;
} else {
days += 28;
}
break;
default:
System.out.println("您输入的月份有错,请重新输入!");
}
System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
int firstDayofMonth = (1 + days)%7;
for (int nullNo = 0; nullNo <firstDayofMonth ; nullNo++) {
System.out.print("\t");
}
for (int i = 1; i <= days; i++) {
System.out.print(i);
if ((i + days) % 7 == 6) {
System.out.print("\n");
} else {
System.out.print("\t");
}
} }}
这个求出来的是一个月第一天的星期?
这样不对吧.
public static void main(String args[]) {
System.out.println(getWeek(2009,9,1));
}
//求dYear年,dMonth月,dDay日是星期几:
public static int getWeek(int dYear,int dMonth,int dDay){
//从公元0年的1月1日到指定的日期经过的总天数:
int days=0;
//每月的天数,months[0]没有用:
int[] months={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(dYear%400==0||dYear%4==0&&dYear%100!=0){
months[2]=29;
}
//以公元0年为基准,到参数所指定的日期过了多少天,一年按365天算,根据闰年数做相应的调整:
days=dYear*365+(dYear-1)/4-(dYear-1)/100+(dYear-1)/400;
//下面的循环把dMonth之前的月份的天数求出来:
for(int i=1;i<dMonth;i++){
days+=months[i];
}
//公元0年的1月1日是星期日:
days+=dDay+6;
return (days)%7;
}
}你写万年历,如果不用java提供的Calendar类,这个算法估计是有用的.
import java.util.*; public class makeweeks { public static void main(String[] args) {
// TODO 自动生成方法存根
Scanner input = new Scanner(System.in);
System.out.print("请输入年份:");
int year = input.nextInt();
System.out.print("请输入月份:");
int month = input.nextInt();
int days = 0;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days += 31;
break;
case 4:
case 6:
case 9:
case 11:
days += 30;
break;
case 2:
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
days += 29;
} else {
days += 28;
}
break;
default:
System.out.println("您输入的月份有错,请重新输入!");
}
System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
Calendar aCalendar=Calendar.getInstance();
aCalendar.set(year, month - 1, 1);
int firstDayofMonth = aCalendar.get(Calendar.DAY_OF_WEEK);
for (int nullNo = 0; nullNo < firstDayofMonth - 1 ; nullNo++) {
System.out.print("\t");
}
for (int i = 1; i <= days; i++) {
System.out.print(i);
if ((i + firstDayofMonth - 1) % 7 == 0) {
System.out.print("\n");
} else {
System.out.print("\t");
}
}
}
}