java - 如何在java中显示所有闰年B / W两年(最终用户应输入年份)

Posted

技术标签:

【中文标题】java - 如何在java中显示所有闰年B / W两年(最终用户应输入年份)【英文标题】:How do I Display All leap year B/W two years ( input as a year should be taken by End User ) in java 【发布时间】:2021-09-21 01:15:58 【问题描述】:

查看此链接中的示例 To check leap year between two years

public class LeapYears 
   public static void main(String[] args) 
 
      GregorianCalendar cal = new GregorianCalendar();
 
      System.out.println("Leap years between 1975 and 2015:");
      for (int year = 1975; year < 2015; year++) 
         if (cal.isLeapYear(year)) 
            System.out.println(year);
         
      
   

【问题讨论】:

你不是just ask this same question吗,也有人回答了,你只是忽略了一个答案,然后删除了这个问题。如果您只是删除您的问题和提供的任何答案,为什么还要其他人提供帮助? 【参考方案1】:

java.time

java.util 日期时间 API 已过时且容易出错。建议彻底停止使用,改用modern Date-Time API*

    您可以使用java.time.Year#isLeap 来检查年份是否为闰年。 为了进行测试,您可以使用Scanner 类从键盘获取输入。

演示:

import java.time.Year;
import java.util.Scanner;

public class Main 
    public static void main(String[] args) 
        Scanner scanner = new Scanner(System.in);

        System.out.print("Enter the first year: ");
        int first = scanner.nextInt();

        System.out.print("Enter the last year: ");
        int last = scanner.nextInt();

        System.out.println("Leap years between 1975 and 2015:");
        for (int year = first; year <= last; year++) 
            if (Year.of(year).isLeap()) 
                System.out.println(year);
            
        
    

示例运行:

Enter the first year: 1975
Enter the last year: 2012
Leap years between 1975 and 2015:
1976
1980
1984
1988
1992
1996
2000
2004
2008
2012

Trail: Date Time 了解有关现代日期时间 API 的更多信息。


* 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用 ThreeTen-Backport,它将大部分 java.time 功能向后移植到 Java 6 和 7 . 如果您正在为一个 android 项目工作并且您的 Android API 级别仍然不符合 Java-8,请检查 Java 8+ APIs available through desugaring 和 How to use ThreeTenABP in Android Project。

【讨论】:

【参考方案2】:

请注意,我使用 Streams 编写了这个程序,并尝试使用过滤器中的逻辑。 我希望程序不要太复杂。

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.stream.IntStream;
import java.util.stream.Collectors;

class Solution 

    static IntStream createYearStream(LocalDateTime from, LocalDateTime to) 
       int yearStart= LocalDateTime.from(from).getYear();
        int yearEnd=LocalDateTime.from(to).getYear();
        //TODO - Create years stream

        return IntStream.range(yearStart,yearEnd);
    

    static List<Integer> getAllLeapYear(IntStream yearRange) 
        List<Integer> leapYears = new ArrayList<Integer>();
        leapYears= yearRange.filter(x->(x%4==0||(x%100==0&&x%400==0) )).boxed().collect(Collectors.toList());

        return leapYears;
    

    public static void main(String[] args) 
        Scanner sc = new Scanner(System.in);
        String from = sc.next();//From Year
        String to = sc.next(); //To Year
        LocalDateTime fromDate = LocalDateTime.parse(from);
        LocalDateTime toDate = LocalDateTime.parse(to);
        List<Integer> leapYears = getAllLeapYear(createYearStream(fromDate, toDate));
        System.out.println(leapYears.size());
    

【讨论】:

以上是关于java - 如何在java中显示所有闰年B / W两年(最终用户应输入年份)的主要内容,如果未能解决你的问题,请参考以下文章

如果语句在 7 小时内出现问题 JAVA 闰年 [关闭]

用java定义一个判断闰年的方法,在main方法中调用该方法判断输入的一个年份是不是是闰年!

用java语言编写一个万年历程序,要求只显示阳历、节日、还有农历年、闰年

用JAVA判断是不是是闰年

java练习题:解一元二次方程判断闰年判断标准身材三个数取最大值

怎样用JAVA写判断一个年份是否闰年的程序?