java吧 关注:1,248,425贴子:12,730,767
  • 2回复贴,共1

求大神 新手学编程 万年历找错误 时间和星期对应不上

只看楼主收藏回复


import java.util.Scanner;
public class printCalendar {
public static void main(String[] args) {
System.out.println("输入一个年份");
Scanner input = new Scanner(System.in);
int year = input.nextInt();
System.out.println("输入一个月份");
int month = input.nextInt();
printMonth(year, month);
}
public static void printMonth(int year,int month){
printMonthTitle(year, month);
printMonthBody(year, month);
}
public static void printMonthTitle(int year, int month){
System.out.println(" "+getMonthName(month)+" "+year);
System.out.println("----------------------------------");
System.out.println(" Sun Mon Tue Wed Thu Fri Sat");
}
public static String getMonthName(int month){
String monthName = "" ;
switch (month) {
case 1:
monthName ="jan";
break;
case 2:
monthName = "feb";
break;
case 3:
monthName = "march";
break;
case 4:
monthName = "april";
break;
case 5:
monthName = "may";
break;
case 6:
monthName = "june";
break;
case 7:
monthName = "july";
break;
case 8:
monthName = "aug";
break;
case 9:
monthName = "sep";
break;
case 10:
monthName = "oct";
break;
case 11:
monthName = "nov";
break;
case 12:
monthName = "Dec";
break;
}
return monthName;
}
public static void printMonthBody(int year,int month){
int startDay = getStartDay(year, month);
int i = 0;
for (i = 0; i < startDay; i++) {
System.out.print(" ");
}
for (i = 1; i <= getDayOfMonth(year, month); i++) {
System.out.printf("%4d",i);
if ((i + startDay) % 7 == 0) {
System.out.println();
}
}
System.out.println();
}
public static int getStartDay(int year, int month){
int startday = (getTotalDays(year, month) + 3) % 7;
return startday;
}
public static int getTotalDays(int year,int month){
int total = 0;
for (int i = 1800; i <= year; i++) {
if (isLeapYear(year)) {
total += 366;
}
else {
total +=365;
}
}
for (int i = 1; i < month; i++) {
total = total + getDayOfMonth(year, i);
}
return total;
}
public static int getDayOfMonth(int year,int month){
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12 ) {
return 31;
}
else if (month == 2) {
return (isLeapYear(year) ? 29 : 28);
}
else if (month == 4 || month == 6 || month == 9 || month == 11) {
return 30;
}
else return 0;
}
public static boolean isLeapYear(int year){
return ((year % 4 == 0 && year % 100 != 0 )|| year % 400 == 0 );
}
}


1楼2015-05-16 14:16回复
    看代码好久 一直找不出来


    2楼2015-05-16 14:17
    回复
      求来人


      3楼2015-05-16 14:23
      回复