java学习——可视化日历的制作

来源:互联网 发布:东南大学怎么样 知乎 编辑:程序博客网 时间:2024/05/06 16:14
学习了Calendar类和GregorianCalendar类的使用,现在来用它们来制作一个简单的可视化日历。

首先把任务分解。

第一步:打印出一周的七天和一个月的31天。

在for循环中从1到31依次打印,对7取余,实现每一行只有七天,对应周一到周日。

/** * 可视化日历的程序-版本1 * @author Administrator * */public class VisulCalendar {public static void main(String[] args) {System.out.println("日\t一\t二\t三\t四\t五\t六");int j=0;for(int i=1;i<=31;i++) {System.out.print(i + "\t");j++;if(j%7 == 0) {System.out.println();j=0;}}}}
运行的效果为:

日一二三四五六12345678910111213141516171819202122232425262728293031
第二步:进一步添加各个模块。使用System.in来捕获键盘输入的日期,判断当前月份的1号是周几(calendar.get(Calendar.DAY_OF_WEEK)-1)),确定当前月份一共多少天(calendar.getActualMaximum(Calendar.DATE))。然后打印出当前月份所有天数,并在当前日期前面加上一个符号*。

package com.bjsxt.TestDate;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;import java.util.Scanner;/** * 可视化日历的程序-版本2 * @author Administrator * */public class VisulCalendar2 {public static void main(String[] args) {System.out.println("请输入日期(按照格式 2030-3-10:)");Scanner scanner = new Scanner(System.in);String str = scanner.nextLine();String temp = str;DateFormat format = new SimpleDateFormat("yyyy-MM-dd");try {Date date = format.parse(temp);Calendar calendar = new GregorianCalendar();calendar.setTime(date);int today = calendar.get(Calendar.DATE);  //获取当前的日期calendar.set(Calendar.DATE,1);System.out.println("本月份的1号是星期"+ ( calendar.get(Calendar.DAY_OF_WEEK)-1));System.out.println("本月份一共"+ calendar.getActualMaximum(Calendar.DATE)+ "天");int maxDate = calendar.getActualMaximum(Calendar.DATE);System.out.println("日\t一\t二\t三\t四\t五\t六");for(int i=1;i< calendar.get(Calendar.DAY_OF_WEEK);i++) {System.out.print("\t");}//打印出当前月份的所有天数,并在当前天数前添加符号*for(int i=1;i<= maxDate;i++) {if(i == today) {System.out.print("*");}System.out.print(i + "\t");int w = calendar.get(Calendar.DAY_OF_WEEK);  //w表示当前是星期几if(w == Calendar.SATURDAY) {System.out.println();}calendar.add(Calendar.DATE,1);}} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
运行程序之后,按照要求输入日期2017-3-23,显示结果如下
请输入日期(按照格式 2030-3-10:)2017-3-23本月份的1号是星期3本月份一共31天日一二三四五六12345678910111213141516171819202122*232425262728293031
至此,便完成了可视化日历的简易版本。



原创粉丝点击