Java实现简陋万年历
要求:
- 根据用户输入的年月进行查询
- 查询下个月
- 查询上个月、
效果展示图01:
代码如下:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
/**
* 万年历:实现三个功能
* ①输入年月查询
* ②查看上个月
* ③查看下个月
* @author Dr.studio
*/
public class DateDemo {
public static void main(String[] args) throws ParseException {
Scanner in = new Scanner(System.in);
//构建时间Calender对象实例
Calendar ca = Calendar.getInstance();
//欢迎界面
//当前月的日历
show(ca);
while(true){
welcome();
//根据输入的指令跳转到对应的功能业务
int code = in.nextInt();
switch (code) {
case 1:
//1.查询指定年月的日历
checkYear(ca,in);
break;
case 2:
//2.查下个月的日历
showNextMonth(ca);
break;
case 3:
//3.查询上个月的日历
showPreMonth(ca);
break;
default:
System.out.println("输入不合法,请重新输入!");
break;
}
}
}
}
//封装欢迎界面的方法
static void welcome(){
System.out.println();
System.out.println("****************万年历****************");
System.out.println("========输入-1- 查看指定月份的日历=========");
System.out.println("========输入-2- 查看下个月份的日历=========");
System.out.println("========输入-3- 查看上个月份的日历=========");
System.out.println("====================================");
}
//封装查询月份的日历
private static void show(Calendar ca){
//1.得到当前月份的总天数
int totalDays = ca.getActualMaximum(Calendar.DAY_OF_MONTH);
//2.得到当前月份的第一天是周几
ca.set(Calendar.DAY_OF_MONTH, 1);
int week = ca.get(Calendar.DAY_OF_WEEK)-1;//变成星期一
//周天(0) 周一(1) 周二(2) .....周六(6)
//3.打印
System.out.println("--------------------------------------------------");
System.out.print("\t\t"+ca.get(Calendar.YEAR)+"\t年\t "+(ca.get(Calendar.MONTH)+1)+"\t月");
System.out.println();
System.out.println("日\t一\t二\t三\t四\t五\t六");
//4.一行:如果week=0 0个空格
// 如果week=1 1个空格
int num=0;//表示输入了几个数据
//空格行
for(int i =0;i<week;i++){
System.out.print(" \t");
num++;
}
//第二行开始,每输入7个(周),换行一次
for(int i =1;i<totalDays;i++){
System.out.print(i+"\t");
num++;
if(num%7==0){
System.out.println();
}
}
System.out.println();
}
代码:
//封装指定月份的日历的方法
private static void checkYear(Calendar ca,Scanner in) throws ParseException {
System.out.println("请输入您要查询的年-注意格式月[2020-06]");
String input = in.next();
System.out.println();
//1.将字符串变成Date类型---->Calender
SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM");
Date date = sdf.parse(input);
//2.把ca修改为用户输入的日历
ca.setTime(date);
//3.打印ca的标准格式万年历
show(ca);
}
效果图:(选择-1-时,查询你输入的年月)
//封装下个月
private static void showNextMonth(Calendar ca) {
//将当前月份往下加一个月
ca.add(Calendar.MONTH, 1);
//打印
show(ca);
}
效果图:(选择-2-时,查询下个月)
//封装上个月
private static void showPreMonth(Calendar ca) {
//将当前月份减一个月
ca.add(Calendar.MONTH, -1);
//打印
show(ca);
}
效果图:(选择-3-时,查询上个月)
感谢关注!学到的东西都会分享出来!希望能够得到大神的指点!灰常感谢