该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
编写了一个显示日历的小程序,但是不输出的CalenderBody,不知道是不是没有执行printCalenderBody(int year,int month)方法,求大神解释,或者说出现了逻辑错误要怎样调试找出错误的地方?附上程序代码
import java.util.Scanner;
public class PrintCalender {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter full year(.eg 2000)");
int year = input.nextInt();
System.out.println("Enter a number for month");
int month = input.nextInt();
printMonth(year,month);
}
public static void printMonth(int year,int month){
printCalenderTitle(year,month);
printCalenderBody(year,month);
}
public static void printCalenderTitle(int year,int month){
System.out.print(getMonthName(month) + " " + year);
System.out.println("\n____________________");
System.out.println("Sun Mon Tue Wed Thu Fri Sat");
}
public static void printCalenderBody(int year,int month){
int total =totaldays(year,month);
int firstDayOfMonth = (total +3) / 7;
for(int i=1;i
System.out.printf("%2s"," ");
}
for(int i=firstDayOfMonth;i<=monthDays(year,month);i++){
System.out.printf("%2d",i);
if(i % 7 == 0)
System.out.print("\n");
}
}
public static String getMonthName(int month){
String monthName = "";
switch(month){
case 1: monthName = "January"; break;
case 2: monthName = "February"; 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 = "August"; break;
case 9: monthName = "September"; break;
case 10: monthName = "October"; break;
case 11: monthName = "November"; break;
case 12: monthName = "December";
}
return monthName;
}
public static int totaldays(int year,int month){
int leapYear=0, totaldays=0;
for(int i=1800;i
if(isLeapYear(i))
leapYear++;
}
totaldays=(year-1800) *365 + leapYear + monthDays(year,month);
return totaldays;
}
public static boolean isLeapYear(int year){
if(year%400 != 0 || (year%400 != 0 && year%4 != 0))
return false;
else
return true;
}
public static int monthDays(int year,int month){
int monthDays=0;
for(int i=1;i
monthDays+=getMonthDays(year,i);
return monthDays;
}
public static int getMonthDays(int year,int month){
int thisMonthDays = 0;
if(month == 1 || month == 3 || month == 5
||month ==7 || month == 8 ||month ==10 || month ==12)
thisMonthDays = 31;
if(month == 6 || month == 9 || month == 11)
thisMonthDays = 30;
if(month == 2){
if(isLeapYear(month))
month = 29;
else
month = 28;
}
return thisMonthDays;
}
}