1 import java.util.Scanner;
2
3 /**
4 * @author Shelwin Wei
5 * 分析过程请参照《闰平年简介及计算过程描述》,网址 http://www.cnblogs.com/shelwin/p/4923480.html
6 */
7 public class LeapAndCommonYear {
8
9 /**
10 * @param args
11 * 使用Java语言编写的应用程序必须包含一个main()方法,修饰符public和static的顺序可以互换,但是依照Java惯例把public放在前面,参数名args不是
12 * 固定的,开发者可以任意命名,但是习惯上使用args或argv。
13 * main()方法是应用程序的入口,一个程序执行时会首先指定类的main()方法,再启动程序所需要的其他资源。main()方法接收一个字符串数据参数,实际上
14 * 该参数提供了运行时系统向应用程序提供参数的途径。当然也可以不传递任何参数 —— 在实际开发中,该参数很少会使用到。
15 */
16 static public void main(String[] args) {
17
18 /* 关于Scanner类的介绍请参考网址
19 * http://bbs.itheima.com/thread-90856-1-1.html
20 */
21 Scanner scan = new Scanner(System.in);
22 String input;
23 int year;
24
25 while(true) {
26 System.out.print("请输入年份(0表示退出):");
27 try {
28 input = scan.nextLine();
29 year = Integer.parseInt(input); //类型转换,关于该方法的介绍请参考http://book.2cto.com/201308/31300.html
30 if (year == 0) {
31 //凡是属于IO流(I-input, O-output, IO流-输入流输出流)的类如果不关闭会一直占用资源,
32 //要养成好习惯用完就关掉,就好像你接水完了要关水龙头一样。
33 scan.close();
34 break; //退出while循环
35 }
36 else if (year < 0){
37 System.out.println("程序仅支持公元元年之后的年份,请重新输入...");
38 continue; //结束当前循环:不再执行while循环内下面的语句,从while循环开始处重新执行
39 } else {
40 //调用自定义函数CheckLeapYear,并传入实际参数(实参,注意与形参的区别)year,根据返回结果输出闰平年信息
41 if (CheckLeapYear(year) == true) {
42 System.out.println("公元" + year + "年是闰年");
43 } else {
44 System.out.println("公元" + year + "年是平年");
45 }
46 }
47 }
48 //catch捕获try{}程序块中的异常信息,此处主要用来监控类型转换语句 year = Integer.parseInt(input),如果类型转换失败,表示用户输入无效
49 catch (Exception e) {
50 String error = "你此次输入无效,错误信息【" + e.getMessage() + "】";
51 System.out.println(error);
52 }
53 }
54
55 System.out.print("程序成功退出!");
56 }
57
58 /**
59 * @param year: 形式参数(形参),可以任意命名,如 nian、year1等,但要让别人看着容易懂
60 * 如果year是闰年,则返回true;否则返回false
61 */
62 public static boolean CheckLeapYear(int year) {
63 if (year % 4 != 0)
64 return false;
65 else if (year % 100 != 0)
66 return true;
67 else if (year % 400 != 0)
68 return false;
69 else if (year % 3200 != 0)
70 return true;
71 else if (year % 86400 != 0)
72 return false;
73 else
74 return true;
75 }
76
77 }