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两年(最终用户应输入年份)的主要内容,如果未能解决你的问题,请参考以下文章
用java定义一个判断闰年的方法,在main方法中调用该方法判断输入的一个年份是不是是闰年!
用java语言编写一个万年历程序,要求只显示阳历、节日、还有农历年、闰年