1、原题

 

  先编写一个方法,它将格式为“yyyy/mm/dd”形式的日期字符串转化为日期对象。若日期字符串不符合以上规定,则抛出异常。再在main方法中对正常和异常输入的日期字符串分别进行验证,并输出转换后的日期对象。


 

    原题是java老师前几天布置的一个课后作业,因为现在还正在学习java控制台下的输入输出操作,所以按原题交作业不难,可用正则表达式或者split()方法拆分用户在控制台下输入的字符串,再进行判断,看是否合理。如果合理,再把值传给Date型对象即可。自己把题目改了一下。改用GUI可视化实现,用户输入年份和月份,按按钮显示当前年月的日历。具体实现下面都有很详细的介绍。

3、UML图

 

输入年月日输出年月日python 输入年月日输出年月日JAVA_java代码

 

4、具体实现代码(附注释:共3份)

 

(1)

 


[java] view plain copy



    1. package
    2.   
    3. /**
    4.  * @Author Kun Sun
    5.  * @Date   2013-10-26
    6.  * @At     XUST
    7.  * @All Copyright by Kun Sun
    8.  * 
    9.  */
    10.   
    11. public class MainClass { // 用做测试
    12.   
    13. /**
    14.      * @param args
    15.      */
    16. public static void
    17. // TODO Auto-generated method stub
    18. new
    19. "简单万年历");  
    20.     }  
    21.   
    22. }


     

     

    (2)

     


    [java] view plain copy



      1. package
      2.   
      3. /**
      4.  * @Author Kun Sun
      5.  * @Date   2013-10-26
      6.  * @At     XUST
      7.  * @All Copyright by Kun Sun
      8.  * 
      9.  */
      10.   
      11. import
      12. import
      13. import
      14.   
      15. import
      16. import
      17. import
      18. import
      19. import
      20. import
      21. import
      22. import
      23.   
      24. public class WindowCalendar extends JFrame implements
      25.     JTable table;  
      26.     CalendarBean calendar;  
      27.     JButton controlButton;  
      28. // 可编辑区域年,月
      29. "星期日","星期一","星期二","星期三","星期四","星期五","星期六"}; // 为了表格中的列名使用
      30. // 二维数组日历
      31.       
      32. // 构造函数,用于初始化
      33.         init();  
      34. 580,200);  
      35. true);  
      36.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
      37.     }  
      38.       
      39. void
      40. new JTextField(8);  
      41. new JTextField(2);  
      42.   
      43. // 标签及文本显示
      44. new
      45. new JLabel("公元:"));  
      46.         pNorth.add(year);  
      47. new JLabel("年 "));  
      48.         pNorth.add(month);  
      49. new JLabel("月   "));  
      50.         add(pNorth,BorderLayout.NORTH);  
      51.           
      52. // 按钮显示及消息响应
      53. new JButton("显示日历");  
      54.         pNorth.add(controlButton);  
      55. this);  
      56.     }  
      57.   
      58. @Override
      59. public void
      60. // TODO Auto-generated method stub
      61. new
      62. 0;  
      63. int inputMonth = 0;  
      64.           
      65. // 对输入进行容错处理,并对正确输入输出相应年月表格日历
      66. try{ // 控制年份和月份都为整数,且有范围限制,年份(-2^31~2^31-1)
      67.             inputYear = Integer.parseInt(year.getText().trim());  
      68.             inputMonth = Integer.parseInt(month.getText().trim());    
      69.               
      70. if(inputMonth>=1 && inputMonth<=12){ // 控制月份为整数(1~12)
      71.                 calendar.setYear(inputYear);  
      72.                 calendar.setMonth(inputMonth);  
      73.                 rili = calendar.getCalendar();  
      74. new
      75. new
      76.                 validate();   
      77. else{   
      78. this,"您输入的月份有错,月份范围为整数(1~12)\n      请重新输入","警告对话框",JOptionPane.WARNING_MESSAGE);  
      79.             }  
      80.               
      81. catch(Exception ee){  
      82. this,"您的输入有错,年份和月份只能输入为整数。\n范围:年份(-2^31~2^31-1),月份(1~12)\n           请重新输入","警告对话框",JOptionPane.WARNING_MESSAGE);  
      83.         }  
      84.     }  
      85. }

       

      (3)

       


      [java] view plain copy



      1. package
      2.   
      3. /**
      4.  * @Author Kun Sun
      5.  * @Date   2013-10-26
      6.  * @At     XUST
      7.  * @All Copyright by Kun Sun
      8.  * 
      9.  */
      10.   
      11. import
      12.   
      13. public class CalendarBean { // 日期类
      14.       
      15. int year = 2013,month = 10,nextDay;  
      16.       
      17. public void setYear(int
      18. this.year = year;  
      19.     }  
      20.       
      21. public void setMonth(int
      22. this.month = month;  
      23.     }  
      24.       
      25. // 根据年月,在二维表格中按真实顺序排位
      26. public
      27. new String[6][7];  
      28.         Calendar 日历 = Calendar.getInstance();  
      29. 1,1);  
      30.           
      31. int 星期几 = 日历.get(Calendar.DAY_OF_WEEK)-1;  
      32. int day = 0;  
      33.           
      34. // 判断一个月有多少天
      35. if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12){  
      36. 31;  
      37.         }  
      38. if(month==4 || month==6 || month==9 || month==11){  
      39. 30;  
      40.         }  
      41. if(month == 2){  
      42. if(((year%4==0)&&(year%100!=0))||(year%400==0)){  
      43. 29;  
      44. else{  
      45. 28;  
      46.             }  
      47.         }  
      48.         
      49. // 二维数组依次排序
      50. 1;  
      51. for(int k=0; k<6; k++){  
      52. if(k == 0){  
      53. for(int j=星期几; j<7; j++){  
      54. ""
      55.                     nextDay++;  
      56.                 }  
      57. else{  
      58. for(int j=0; j<7
      59. ""
      60.                     nextDay++;  
      61.                 }  
      62.             }  
      63.         }  
      64.           
      65. return a; // 返回二维当前年月数组
      66.     }  
      67. }


       

      5、测试用例及截图

       

      (1)初始状态

       

      输入年月日输出年月日python 输入年月日输出年月日JAVA_java代码_02

       

      (2)分别输入2013和10,并点击按钮"显示日历"

       

      输入年月日输出年月日python 输入年月日输出年月日JAVA_java_03

       

      (3)分别输入swa和10,并点击按钮"显示日历"

       

      输入年月日输出年月日python 输入年月日输出年月日JAVA_字符串_04

       

      (4)分别输入2013和13,并点击按钮"显示日历"

       

      输入年月日输出年月日python 输入年月日输出年月日JAVA_java_05

       

      (5)分别输入-126和10,并点击按钮"显示日历"

       

       

      输入年月日输出年月日python 输入年月日输出年月日JAVA_字符串_06

       

       

      (6)测试其余进制数结果类似上述

       

      6、把上述java代码打包成exe可执行文件

       

         关于如何打包,读者可以看一下这篇博客《手把手教你如何把java代码,打包成jar文件以及转换为exe可执行文件》,链接如下:

       

      7、备注

       

         如果您对更好的想法或建议,恳请指出,不胜感激。