java打印指定年月份的日历

网友投稿 234 2022-12-31


java打印指定年月份的日历

本文实例为大家分享了java打印指定年月份日历的具体代码,供大家参考,具体内容如下

做了一个小的日历打印,没有使用数组,所以不能对日期进行操作,用了单个for循环打印,对初学者来说应该好理解点

工具类:

import java.util.Calendar;

public class DaysTool {

private int year;

private int month;

public DaysTool(){}

public DaysTool(int year ,int month){

this.year = year;

this.month = month;

}

/**

* 根据年份和月份来得到打印月份的第一天是周几

* @return 是一周的周几

*/

public int WhatWeekDay(){

//创建Calendar对象

Calendar calendar = Calendar.getInstance();

//设置calendar对象的年

calendar.set(Calendar.YEAR,this.year);

//设置calendar对象的月份 ,因为此处的月份是从零开始(0-11表示1-12月),所以我们输入的数值要减去1才是正确的月份

//(比如输入8月,接收数值 8 ,但是因为Calendar的特殊月份计数, 8 代表的是"9月",所以减去 1 为 7 ,才是正确的 8月)

calendar.set(Calendar.MONTH,this.month-RiQZR1);

//设置日期为打印月的第一天

calendar.set(Calendar.DATE, 1);

//用get方法获取这一天是周几

int whatDay = calendar.get(Calendar.DAY_OF_WEEK);

//Calendar从周日开始到周六结束,用1-7表示,这里为了方便,把其数值减 1 ,得到周日到周六为 0 - 6 只需特殊处理周日即可

return whatDay-1; //得出这个月的第一天是周几

}

public int WhatDayOfMonth(){

//实例化Calendar对象

Calendar calendar = Calendar.getInstance();

//设置为打印年打印月的下一个月(参考WhatWeekDay方法中的月份注释 ,这里没减1)第一天.

//例:输入 2018 2 其实为2018年的3月

calendar.set(this.year,this.month,1);

//使上面的日期退一天 得到打印月

calendar.add(Calendar.DATE,-1);

//获取日的数值

int monthDay =calendar.get(Calendar.DATE);

return monthDay;

}

public int getYear() {

return year;

}

public void setYear(int year) {

this.year = year;

}

public int getMouth() {

return month;

}

public void setMouth(int mouth) {

this.month = mouth;

}

}

主类(包含了打印工具类)

import java.util.Scanner;

public class PrintCalendar {

public static void main(String[] args) {

//接收键盘录入年份和月份

Scanner scanner = new Scanner(System.in);

System.out.print("请输入需要打印的年份: ");

int year = scanner.nextInt();

System.out.print("请输入需要打印的月份: ");

int month = scanner.nextInt();

//创建日历工具类对象,并用带参构造初始化

DaysTool dt = new DaysTool(year,month);

//实例化打印工具类对象

PrintDayTool pd = new PrintDayTool();

System.out.println(String.format("\n即将打印%d年%d月日历",year,month)+"\n");

System.out.println("========================================================\n");

//调用打印工具类对象的printDay方法,传入年和月份

pd.printDay(dt.WhatDayOfMonth(),dt.WhatWeekDay());

System.out.println("========================================================");

}

}

class PrintDayTool{

//

/**

* 打印日历方法,

* @param daysOfMouth 传入参数,确定打印月份的天数

* @param whatDay 传入参数,确定打印月份的第一天是周几

*/

public void printDay(int daysOfMouth,int whatDay){

int count = 0; //定制计数标记

System.out.print("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");

//j从1开始 到这个月的天数结束

for(int j = 1 ; j <= daysOfMouth ; j ++){

count++;

//每打印七天就换行

if(count % 7 == 1){

System.out.print("\n\n");

}

//如果这月的第一天是周日就把它置为0 不打印额外制表符

if(whatDay==7)

whatDay = 0;

//这个月的第一天是周几就额外打印几次制表符

while (whatDay>0){

System.out.print("\t\t");

whatDay--;

count++;

}

//打印天数

System.out.print(j+"\t\t");

}

//打印完日历换行

System.out.println("\n");

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:api网关 开源 计费(Java api网关)
下一篇:包含视频传输系统接口设计规范的词条
相关文章

 发表评论

暂时没有评论,来抢沙发吧~