显示日历
2015-11-28 16:05
281 查看
## 题目要求 ## 使用MyCalendar 类显示指定月份的日历程序从命令接收月份和年份。如果运行程序没有指定月份和年份,那么,年份就是当前年份,月份就是当前月份。 ## MyCalendar类 ##
import java.awt.*; import java.util.*; public class MyCalendar extends GregorianCalendar { public int daysInMonth() { switch(get(MONTH)) { case 0: case 2: case 4: case 6: case 7: case 9: case 11: return 31; case 1: if(isLeapYear(get(YEAR))) return 29; case 3: case 5: case 8: case 10: return 31; default : return 0; } } public String getMonthName() { String monthName=null; switch(get(MONTH)) { case 0: monthName = "January"; break; case 1: monthName = "Feburary"; break; case 2: monthName = "March"; break; case 3: monthName = "April"; break; case 4: monthName = "May"; break; case 5: monthName = "June"; break; case 6: monthName = "July"; break; case 7: monthName = "August"; break; case 8: monthName = "September"; break; case 9: monthName = "October"; break; case 10: monthName = "November"; break; case 11: monthName = "December"; break; default: } return monthName; } }
## 主函数类 ##
import java.util.*; public class display { static MyCalendar calendar=new MyCalendar(); public static void main(String[] args) { int month=calendar.get(MyCalendar.MONTH)+1; int year=calendar.get(MyCalendar.YEAR); if(args.length>2) System.out.println(args[1]); else if(args.length==2) { year=Integer.parseInt(args[1]); month=Integer.parseInt(args[0]); calendar.set(Calendar.YEAR,year); calendar.set(Calendar.MONTH,month-1); } else if(args.length==1) { month=Integer.parseInt(args[0]); calendar.set(Calendar.MONTH,month-1); } calendar.set(Calendar.DATE,1); printMonth(year,month); } static void printMonth(int year,int month) { int startDay=getStartDay(); int numOfDaysInMonth=calendar.daysInMonth(); printMonthTitle(year,month); printMonthBody(startDay,numOfDaysInMonth); } static int getStartDay() { return calendar.get(Calendar.DAY_OF_WEEK); } static void printMonthTitle(int year,int month) { System.out.println(" "+calendar.getMonthName()+", "+year); System.out.println("-----------------------------"); System.out.println(" Sun Mon Tue Wed Thu Fri Sat"); } static void printMonthBody(int startDay,int numOfDaysInMonth) { int i = 0; for (i = 0; i < startDay-1; i++) System.out.print(" "); for (i = 1; i <= numOfDaysInMonth; i++) { if (i < 10) System.out.print(" "+i); else System.out.print(" "+i); if ((i + startDay - 1) % 7 == 0) System.out.println(); } System.out.println(""); } }
## 程序运行结果(未指定年份和月份) ##
## 程序运行结果(指定年份和月份) ##
相关文章推荐
- 大数的加减乘除
- 基于 Windows 7 的计算机的可用内存可能低于安装内存
- [转]session 持久化问题(重启服务器session 仍然存在)
- poj3708(公式化简+大数进制装换+线性同余方程组)
- empty和isset函数实验比较差别
- 1.通过原始的Driver接口获取JDBC数据库连接Connection
- sql字段null参与运算 sql date
- 百度地图API示例之设置地图显示范围
- Java语法基础
- 搞机进行时,树莓派2打造高性能openwrt路由器
- Unity官方实例教程 Roll-a-Ball(二)
- Apple TV编程指南:检测手势和按钮按压
- 《HeadFirst SQL》笔记
- Ugly Number
- javascript利用正则获取第一根斜线后的内容
- Apple TV编程指南:使用Apple TV遥控器控制屏幕上的用户界面
- bind,apply,call的区别
- 多线程之:多线程的优缺点
- 1-3-15:苹果和虫子
- 基于PSR-0标准的自动载入范例