import java.util.Scanner;

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

最新文章

  1. 以空白符结尾的 alias
  2. selenium问题记录
  3. 64位系统里的IIS运行32位ODP.NET的方法
  4. JSOUP选择器语法说明
  5. sizeof()用法汇总
  6. Hadoop运维操作
  7. 1050 棋盘染色 2 - Wikioi
  8. 2010 A B 2011 A B
  9. js转换ascii编码如中文友转换为编码友;可防止乱码
  10. JavaScript声音播放
  11. Azure按订阅,资源组,资源类型导出所有资源powershell命令
  12. Bugku-CTF之过狗一句话(送给大家一个过狗一句话)
  13. Anatomy of a Database System学习笔记 - 概论、并发控制
  14. C语言定义的操作mysql数据库的接口
  15. myeclipise生成javadoc
  16. 使用socket.io client 开发时兼容IE低版本的办法
  17. Java方法通过RestTemplate调用restful接口
  18. B1004. 成绩排名
  19. 解决Android LogCat 输出乱码的问题(转)
  20. Xilinx SD controller

热门文章

  1. FileReader的编码问题
  2. matlab 神经网络工具箱的实用
  3. WPF中的可视化对象(Visual)
  4. WPF-3D动效-文字球形环绕
  5. GoldenGate过程 abend,报错OGG-00868 ORA-02396: Exceeded Maximum Idle Time, Please Connect Again
  6. 好用的Markdown 编辑器及工具
  7. Asp UserInfoList 方法二
  8. C++ Boost库简介(一些自己的感受)
  9. main()如果返回0,则代表程序正常退出,返回非零代表程序异常退出。
  10. 虚拟机安装的kali无法识别本机物联网卡