闰平年简介及计算过程描述 - Java代码实现
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 }