您的位置:首页 > 编程语言 > Java开发

请各位看看哪里出了错(java打印日历)

2018-01-15 23:14 309 查看
package calender;

import java.util.Scanner;

//使用方法来实现日历的打印

public class print {
/**用户输入的年份*/
public static int year=Integer.MIN_VALUE;//定义全局变量可以表示int型的最小值
/**用户输入的月份*/

public static int month=Integer.MIN_VALUE;//定义全局变量可以表示int型的最小值
static int[]day= {31,28,31,30,31,30,31,31,30,31,30,31};//普通月
public static void main(String[] args) {
PrintCalender();//方法的调用

}

//打印日历的方法
public static void PrintCalender() {
//1.让用户输入年份和月份

//2.计算1900-1-1到用户输入年份月份的总天数
/**可以先输入1900到当前月的前一个月末的天数加上输入的天数*/
//2-1计各年的总天数,2-2计算各月的总天数,\
int sum=getSumDayOfYears( year);//得到年份中的天使
sum+=getDayOfMonth( month);//得到月份中的天数
//sum++;//到输入月的月首
PrintMonthTitle();
PrintCalenderContent(sum%7);
}

//3.打印年份和月份
//4,打印月份的标题
private static void PrintMonthTitle() {
String[] monthNames={"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};
System.out.println(year+"\t"+monthNames[month-1]);
System.out.print("星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t星期日");
}

//5.根据某月一日是星期几答应日历的内容
private static void PrintCalenderContent(int dayofweek)
{
//day of week 从0到6
int sepcount=0;
if(dayofweek==0)
{sepcount=6;}
else { sepcount=dayofweek-1;}
//分隔符的数量
for(int i=0;i<sepcount;i++)
{
System.out.print("\t");
}
for(int i=0;i<day[month-1];i++)
{
System.out.print(i+1);//输入天数
if((dayofweek+i)%7==0)//周日
{
System.out.println();
}
else
System.out.println("\n");

}
}

/**1.用来进行输入*/
private static void WAY1() {
Scanner in=new Scanner(System.in);
System.out.println("请输入相应的年份");
year=in.nextInt();//接收数据
System.out.println("请输入相应的月份");
month=in.nextInt();
in.close();//相对专业的做法,用来节省空间
in=null;
}
/**2.用来计算1900到year年的总天数*/
private static int getSumDayOfYears(int year) {

//判断年份是否正确输入if(year==Integer.MIN_VALUE)
{
System.out.println("年份输入错误,请重新输入");
WAY1();
}

//如果用户没有正确输入,则可以调用way1使用户重复输入
int sum=0;
for(int i=1900;i<year;i++)
{
sum=sum+365;//每一年累加365天
if(isLeapyear(i))
{
sum++;//闰年多加一天
}
return sum;
}

return sum;
}
/**计算year一月一号到year年month-1月总天数的方法*/
private static int getDayOfMonth(int month)
{
int sum=0;

if(month>12||month<1)
{
System.out.println("输入错误");
}
for(int i=0;i<month-1;i++)
{
sum=sum+day[i];
}
if((isLeapyear(year))&&month>=3)//如果是三月后的闰年,SUM又要+1
{sum++;}
return sum;
}
/**把是否闰年封装成方法
* 是闰年返回true*/
private static boolean isLeapyear(int year) {
return year%400==0||year%4==0&&year%100!=0;
}

}

2018/1/15

java
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: