请各位看看哪里出了错(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
相关文章推荐
- 在java中实现类似于.net中的DataTable,请各位看看,这种方法可行吗?
- java打印日历
- Java 打印日历
- Java开发练习1,打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153 是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
- (Java)打印指定年月的日历
- Java控制台打印简单日历
- java不用时间格式打印日历
- java实现一个月的日历打印
- java 实现打印当前月份的日历
- java上传问题,求各位高手帮帮忙,看看是什么问题,急!急!急!
- Java实现按年月打印日历功能【基于Calendar】
- java Calendar 日历的打印
- 各位高手,有谁能帮帮我,看看我的ASP文件哪里错了
- [基础]java打印日历
- JAVA 输入年份月份打印该月的日历
- java 打印日历
- java----根据输入的年月判断闰年和打印日历
- JAVA算法题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
- java求数组的平衡点,请各位高手看看对否?
- 打印日历(java)