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



请参阅此链接中的示例检查两年之间的闰年

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);
}
}
}
}

java.time

java.util日期-时间API已过时,并且正在生成错误。建议完全停止使用,并切换到现代日期时间API*

  1. 您可以使用java.time.Year#isLeap检查年份是否为闰年
  2. 为了进行测试,您可以使用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

跟踪:日期时间了解有关现代日期时间API的更多信息。


*出于任何原因,如果您必须坚持使用Java 6或Java 7,您可以使用ThreeTen BackportJava.time的大部分功能向后移植到Java 6&7.如果您正在为Android项目工作,并且您的Android API级别仍然不符合Java-8,请检查通过desugaring和如何在Android项目中使用ThreeTenABP提供的Java 8+API

请注意,我已经使用Streams编写了这个程序,并尝试使用filter中的逻辑。我希望这个节目不要太复杂。

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());
}
}

最新更新