某公司软件开发工程师孙工,作息规律为上三天班,休息一天,经常不确定休息日 是否周末,为此,请你开发一个程序,当孙工输入年及月,以日历方式显示对应月 份的休息日,用中括号进行标记.同时,统计出本月有几天休息,轮到周末休息有 几天.(注:首次休息日是 2020 年 2 月 2 日)。
代码及注释
代码1:数据处理部分
package com.java.task010301_002;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class FindDao {
View view = new View();
public void calculate() throws ParseException {
//获取指定年月
int year = view.getYear();
int month = view.getMonth()-1;//类中月份范围0-11,用户输入1-12
// 使用默认时区和语言环境获得一个日历
Calendar calendar = Calendar.getInstance();
//设置当前日历为用户输入的日期
calendar.set(year,month,1);
//获取本月最大天数----DAY_OF_MONTH:get和 set字段编号表示当月的日期。
int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
//判断本月第一天是星期几------DAY_OF_WEEK: get和set字段编号表示星期几
int week = calendar.get(Calendar.DAY_OF_WEEK);
//日历横头---星期显示
view.weekView();
//第一天是星期几,前面就留出多少空格,保证对齐
for (int i=1;i=0 && days%4==0){
return true;
}
return false;
}
}
代码2:数据输出展示部分 (视图部分)
package com.java.task010301_002;
import java.util.Scanner;
public class View {
Scanner input = new Scanner(System.in);
//获取年份:
public int getYear(){
System.out.println("请输入年:");
String inputYear = input.nextLine();
int year = -1;
try {
year = Integer.parseInt(inputYear);
}catch (NumberFormatException e){
}
if (year<1000 || year>10000){
System.out.println("格式输入有误,请重新输入---");
return getYear();
}
return year;
}
//获取月份
public int getMonth(){
System.out.println("请输入月份:");
String inputMonth = input.nextLine();
int month = -1;
try {
month = Integer.parseInt(inputMonth);
} catch (NumberFormatException e) {
}
if (month<1 || month>13){
System.out.println("格式输入有误,请重新输入---");
return getMonth();
}
return month;
}
//是否继续查找
public int proceedFind(){
System.out.println("是否继续查找?1.继续 0.退出");
String s = input.nextLine();
int flag = -1;
try {
flag = Integer.parseInt(s);
}catch (NumberFormatException e){
}
if (flag!=0 && flag!=1){
System.out.println("格式输入有误,请重新输入---");
return proceedFind();
}
return flag;
}
//日历横头---星期显示
public void weekView(){
System.out.println("星期日t星期一t星期二t星期三t星期四t星期五t星期六");
}
}
代码3:主函数调用部分
package com.java.task010301_002;
import java.text.ParseException;
public class MainTest {
public static void main(String[] args) throws ParseException {
FindDao findDao = new FindDao();
View view = new View();
while (true){
System.out.println("-------欢迎来到工作日/休息日查询系统---------");
findDao.calculate();
//判断是否继续
int proceed = view.proceedFind();
if (proceed == 0){
System.out.println("感谢使用!");
break;
}
}
}
}
运行结果展示
注意:题目要求从2020年2月2日开始,所以我们要首先验证一下,开始时间是否符合题意。因为本人出现过这种错误,所以在此小小提醒一下。
实现继续查找功能:
实现退出功能:
总结
对之前所学的知识点做一个小小的总结,希望各位大佬不吝赐教。



