首页 > 代码库 > 第一个小程序

第一个小程序

学习java到现在,尝试写了第一个小程序。

程序内容:一个输入日期然后可以打印日历并标注日期的小程序。

遇到的问题:1.如何解决遍历数组到星期6然后换行的问题。

      2.如何解决判断是否换行和遍历数字的先后问题。

解决方法:1.用除7的余数来解决,一周只有7天,用7减去前面得到的开始于星期几的数字,因为开始的第一天也算的,所以还要加1就得到了第一行末端的数字。因为后面都是7天一次换行了,所以用从0开始的一个计数器判断在除七余数是这个数字的时候换行。但是要排除一种特殊情况,如何这个月从星期日开始,就变成了判断除7是否余7,无法换行,必须考虑特殊情况。

    2.如果不考虑标示目标日期的情况下,2种都行,只是写法不同。但是要考虑一种情况如果标记的日期在最右端,计数器计数后就必须先判断然后换行,在继续遍历数字才满足条件。


 1 package 可视化日历;
 2 
 3 import java.text.DateFormat;
 4 import java.text.ParseException;
 5 import java.text.SimpleDateFormat;
 6 import java.util.Calendar;
 7 import java.util.Date;
 8 import java.util.GregorianCalendar;
 9 import java.util.Scanner;
10 class Demo
11 {
12     public void run()
13     {
14         System.out.println("请输入日期:(格式为年-月-日)");
15         Scanner s=new Scanner(System.in);
16         String tamp=s.nextLine();//捕获输入的日期
17         DateFormat format =new SimpleDateFormat("yyyy-MM-dd");
18         try 
19         {
20             Date d =format.parse(tamp);
21             Calendar calendar=new GregorianCalendar();
22             calendar.setTime(d);//将字符串转换为日历格式
23             int day=calendar.get(Calendar.DATE);
24             calendar.set(Calendar.DAY_OF_MONTH, 1);
25             int begin=calendar.get(Calendar.DAY_OF_WEEK);//得到这月开始于星期几。
26             int max=calendar.getActualMaximum(Calendar.DATE);//得到这个月有多少天。
27             System.out.println("日\t一\t二\t三\t四\t五\t六");
28             int b=0;
29             for(int x=1;x<begin;x++)//跳过前面,以便从正确的星期几开始。
30             {
31                 System.out.print("\t");
32             }    
33             for(int a=1;a<=max;a++)//遍历日期,最大值为这个月最大的一天。
34             {
35                 if(day==a)
36                 {
37                     System.out.print("*\t");//标记选择的日期。
38                     b++;//b用来记录次数
39                 }
40                 else
41                 {    if(begin==1&&b%7==0)//特殊情况直接从星期日开始,余7的话,系统无法判断换行。
42                     {
43                         System.out.println();
44                     }
45                     if(b%7==(7-begin+1))//用于7的余数来解决换行问题。
46                     {
47                         System.out.println();
48                     }
49                     System.out.print(a+"\t");
50                     b++;
51                 }
52             }
53         } 
54         catch (ParseException e) 
55         {
56             System.out.println("输入格式错误");
57         }
58     }
59 }
60 public class Text_1 
61 {
62     public static void main(String[] args)
63     {
64         Demo d=new Demo();
65         d.run();
66     }
67 }    

 


如果输入:2017.7.21日

 

 

结果为:

技术分享

第一个小程序