【问题标题】:Java Leap Year Calculator [duplicate]Java闰年计算器[重复]
【发布时间】:2014-10-13 10:26:28
【问题描述】:

我正在制作一个扫描仪对象来获取年份并测试它是否是闰年。只是想要一些反馈。这就是我所拥有的吗?谢谢!

import java.util.Scanner;
public class Micro4 
{
  public static void main(String[] args) 
  {

    Scanner input = new Scanner(System.in);

    int testDate = input.nextInt();

    boolean divFour = (((testDate % 4) == 0));
    boolean divHundred = (((testDate % 100) != 0));
    boolean divFourHundred = (((testDate % 400) != 0));

    if (divFour && divHundred && divFourHundred) {
      System.out.println(testDate + " is a leap year.");
    } else {
      System.out.println(testDate + " is not a leap year.");
    }
  }
}

【问题讨论】:

  • 你能添加你得到的确切错误
  • 请致电java.time.Year.isLeap
  • 克里斯,这显然是值得学习的东西。当然有内置的方法来做这些事情,但是 Rafael 不会从解决问题中学习。至于你,Srikanth,请阅读 Rafael 的帖子 - 他要求的是简单的反馈,而不是纠正错误。

标签: java leap-year


【解决方案1】:

逻辑有点错误。 2000 年是闰年,但它不符合您的计划。正确的逻辑应该是:

if ((divFour && divHundred)||!divFourHundred) {

另外,正如 Dave Galvin 所建议的,确实使用更好的变量名来提高可读性。

【讨论】:

    【解决方案2】:

    诀窍是将其放入代码中:

    如果能被 4 整除,一年就是闰年,但世纪年是 不是闰年,除非它们能被 400 整除。

    我正在检查一个(年份是 4 的倍数而不是 100 的倍数)或(年份是 400 的倍数)。

     if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
        System.out.println("Leap");
    
     else
        System.out.println("Not leap.");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多