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. }

闰平年简介及计算过程描述 - Java代码实现的更多相关文章

  1. Pandas统计计算和描述

    Pandas统计计算和描述 示例代码: import numpy as np import pandas as pd df_obj = pd.DataFrame(np.random.randn(5,4 ...

  2. Java代码计算运行时间

    突然想准确的测试一下Java代码的执行时间,在网上找了一会.发现基本有以下两种方法:第一种是以毫秒为单位计算的. Java代码 //伪代码 long startTime=System.currentT ...

  3. 详细分析栈和队列的数据结构的实现过程(Java 实现)

    目录 栈和队列的数据结构的实现过程(Java 实现) 栈的数据结构的实现 栈的基础知识回顾 栈的常见应用 基于数组的栈的实现 具体代码设计 基于数组的栈简单的时间复杂度分析 关于栈的一个算法应用:括号 ...

  4. 160826、浏览器渲染页面过程描述,DOM编程技巧以及重排和重绘

    一.浏览器渲染页过程描述   1.浏览器解析html源码,然后创建一个DOM树. 在DOM树中,每一个HTML标签都有一个对应的节点(元素节点),并且每一个文本也都有一个对应的节点(文本节点). DO ...

  5. 浏览器渲染页面过程描述,DOM编程技巧以及重排和重绘。

    一.浏览器渲染页过程描述 1.浏览器解析html源码,然后创建一个DOM树. 在DOM树中,每一个HTML标签都有一个对应的节点(元素节点),并且每一个文本也都有一个对应的节点(文本节点). DOM树 ...

  6. java代码的编译、执行过程

    Java代码编译是由Java源码编译器来完成,流程图如下所示: Java字节码的执行是由JVM执行引擎来完成,流程图如下所示: Java代码编译和执行的整个过程包含了以下三个重要的机制: Java源码 ...

  7. 机器翻译评价指标之BLEU详细计算过程

    原文连接 https://blog.csdn.net/guolindonggld/article/details/56966200 1. 简介 BLEU(Bilingual Evaluation Un ...

  8. CFD计算过程发散诸多原因分析【转载】

    转载自: http://blog.sina.com.cn/s/blog_5fdfa7e601010rkx.html 今天探讨引起CFD计算过程中发散的一些原因.cfd计算是将描述物理问题的偏微分方程转 ...

  9. PAT(B) 1063 计算谱半径(Java)

    题目链接:1063 计算谱半径 (20 point(s)) 题目描述 在数学中,矩阵的"谱半径"是指其特征值的模集合的上确界.换言之,对于给定的 n 个复数空间的特征值 { a​1 ...

随机推荐

  1. HDU1078 FatMouse and Cheese 【内存搜索】

    FatMouse and Cheese Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  2. jQuery.noop

    一个空函数 当你仅仅想要传递一个空函数的时候,就用他吧.这对一些插件作者很有用,当插件提供了一个可选的回调函数接口,那么如果调用的时候没有传递这个回调函数,就用jQuery.noop来代替执行.

  3. C#并发集合

    并发集合   并发集合 1 为什么使用并发集合? 原因主要有以下几点: System.Collections和System.Collections.Generic名称空间中所提供的经典列表.集合和数组 ...

  4. 王立平--GC

    Gabage Collection:垃圾回收 是.net中对内存管理的一种功能. 垃圾回收器跟踪并回收托管内存中分配的对象,定期运行垃圾回收以回收分配给没有有效引用的对象的内存. 当使用可用内存不能满 ...

  5. ocjp(scjp) 的官网样题收录-20130723

    官网上给的样题很少,带(*)的为正确答案. OBJECTIVE: 1.5: Given a code example, determine if a method is correctly overr ...

  6. WPF 同一窗口内的多线程/多进程 UI(使用 SetParent 嵌入另一个窗口)

    原文 WPF 同一窗口内的多线程/多进程 UI(使用 SetParent 嵌入另一个窗口) WPF 的 UI 逻辑只在同一个线程中,这是学习 WPF 开发中大家几乎都会学习到的经验.如果希望做不同线程 ...

  7. 作为学术用的 matlab

    1. 可重复实验 程序实现的所谓随机,并非完全的随机,而是由某一算法(或者再需要一个种子值)生成出来的. randn('state', 0) % set state so that example c ...

  8. pip 9.0 离线安装Python3的环境库

    到客户现场实施,很多情况下是没有网络的,我们需要在办公室准备好离线安装包. 假设现有已联网的客户机A,一台无网络的客户机B 客户机A 1.生成本地环境的包清单 pip3 freeze > req ...

  9. JQUERY名称冲突

    jQuery 使用 $ 作为符号 jQuery 介绍的简单方法. 其他 JavaScript 库函数(例 Prototype)使用相同的 $ 符号. jQuery 使用命名 noConflict() ...

  10. WPF DataGrid 触发器

    <DataGrid.RowHeaderStyle> <Style TargetType="DataGridRowHeader"> <Style.Tri ...