Write a Java program to find if a year is a leap year or not is a
standard Java
programming exercise during various Java programming course on school,
colleges and various training institutes both online and offline, along with other popular homework's e.g. printing
Fibonacci numbers, checking
palindromes or finding
prime numbers. Just to recap a leap year is a year with 366 days which is 1
extra day than a normal year. This extra day comes in the month of February and on
leap year Feb month has 29 days than normal 28 days. If you are following then
you might know that leap year comes in an interval of 4 years. This year 2012 is
a leap year and Feb has 29 days, you can check.
Now if you are in programming before you might be familiar that there is standard logic to find leap year i.e. if an year is multiple of 400 or multiple of 4 but not multiple of 100 then its a leap year. In addition to this standard logic, you can also use Java's Date, Time and Calendar API to check how many days any year has and by comparing that number with 365 you can find whether that year is leap year or not .
In this Java programming tutorial we will both of these example to check if a year is leap year or not.
Now if you are in programming before you might be familiar that there is standard logic to find leap year i.e. if an year is multiple of 400 or multiple of 4 but not multiple of 100 then its a leap year. In addition to this standard logic, you can also use Java's Date, Time and Calendar API to check how many days any year has and by comparing that number with 365 you can find whether that year is leap year or not .
In this Java programming tutorial we will both of these example to check if a year is leap year or not.
And, if you need to refresh your Data Structure and Algorithms skills to solve those problems then I highly recommend checking out Data Structures and Algorithms: Deep Dive Using Java course on Udemy. It's a hands-on course and covers all essential data structures. It's also very affordable and you can get in just $10 on Udemy flash sales which happen every now and then.
Java program to check if a year is leap year

How to check if a year is a leap year in Java
package test;
import java.util.Calendar;
/**
*
* Java program to find if a year is leap year or not.
import java.util.Calendar;
/**
*
* Java program to find if a year is leap year or not.
* A leap
year is a year which contains 366 day, which is 1 day more of normal 365 day
year.
* Leap year
comes in a interval of 4 years. In Gregorian
* calendar in leap year February has 29 days which is 1 day more than 28 day in normal year.
*
* @author
*/
public class LeapYearProgram {
public static void main(String args[]) {
//Testing some leap and non leap year using Java library code
System.err.println("Is 2000 a leap year ? : " + isLeapYear(2000));
System.err.println("Is 2012 a leap year ? : " + isLeapYear(2012));
System.err.println("Is 1901 a leap year ? : " + isLeapYear(1901));
System.err.println("Is 1900 a leap year ? : " + isLeapYear(1900));
//Checking leap year without using library or API and applying logic
System.err.println("Does 2000 a leap year : " + doesLeapYear(2000));
System.err.println("Does 2012 a leap year : " + doesLeapYear(2012));
System.err.println("Does 1901 a leap year : " + doesLeapYear(1901));
System.err.println("Does 1900 a leap year : " + doesLeapYear(1900));
}
/*
* This method checks whether a year is leap or not by using Java Date
* and Time API. Calendar class has utility method to return maximum
* number of days in a year which can be used to check if its
* greater than 365 or not
*/
public static boolean isLeapYear(int year){
Calendar cal = Calendar.getInstance(); //gets Calendar based on local timezone and locale
cal.set(Calendar.YEAR, year); //setting the calendar year
int noOfDays = cal.getActualMaximum(Calendar.DAY_OF_YEAR);
if(noOfDays > 365){
return true;
}
return false;
}
/*
* This method uses standard logic to check leap year in Java.
* A year is a leap year if its multiple of 400 or multiple of 4 but not 100
*/
public static boolean doesLeapYear(int year){
return (year%400 == 0) || ((year%100) != 0 && (year%4 == 0));
}
}
Output:
Is 2000 a leap year ? : true
Is 2012 a leap year ? : true
Is 1901 a leap year ? : false
Is 1900 a leap year ? : false
Does 2000 a leap year : true
Does 2012 a leap year : true
Does 1901 a leap year : false
Does 1900 a leap year : false
* calendar in leap year February has 29 days which is 1 day more than 28 day in normal year.
*
* @author
*/
public class LeapYearProgram {
public static void main(String args[]) {
//Testing some leap and non leap year using Java library code
System.err.println("Is 2000 a leap year ? : " + isLeapYear(2000));
System.err.println("Is 2012 a leap year ? : " + isLeapYear(2012));
System.err.println("Is 1901 a leap year ? : " + isLeapYear(1901));
System.err.println("Is 1900 a leap year ? : " + isLeapYear(1900));
//Checking leap year without using library or API and applying logic
System.err.println("Does 2000 a leap year : " + doesLeapYear(2000));
System.err.println("Does 2012 a leap year : " + doesLeapYear(2012));
System.err.println("Does 1901 a leap year : " + doesLeapYear(1901));
System.err.println("Does 1900 a leap year : " + doesLeapYear(1900));
}
/*
* This method checks whether a year is leap or not by using Java Date
* and Time API. Calendar class has utility method to return maximum
* number of days in a year which can be used to check if its
* greater than 365 or not
*/
public static boolean isLeapYear(int year){
Calendar cal = Calendar.getInstance(); //gets Calendar based on local timezone and locale
cal.set(Calendar.YEAR, year); //setting the calendar year
int noOfDays = cal.getActualMaximum(Calendar.DAY_OF_YEAR);
if(noOfDays > 365){
return true;
}
return false;
}
/*
* This method uses standard logic to check leap year in Java.
* A year is a leap year if its multiple of 400 or multiple of 4 but not 100
*/
public static boolean doesLeapYear(int year){
return (year%400 == 0) || ((year%100) != 0 && (year%4 == 0));
}
}
Output:
Is 2000 a leap year ? : true
Is 2012 a leap year ? : true
Is 1901 a leap year ? : false
Is 1900 a leap year ? : false
Does 2000 a leap year : true
Does 2012 a leap year : true
Does 1901 a leap year : false
Does 1900 a leap year : false
That's all on How to check if a year is leap year or not in Java.
I prefer to use library code instead of reinventing wheel but if it's an homework
or programming exercise, you are likely to be asked to do this using pure
logic. By the way this logic can be implemented in any other programming
language like C, C++ or python as well.
Further Learning
Data Structures and Algorithms: Deep Dive Using Java
Algorithms and Data Structures - Part 1 and 2
Data Structures in Java: An Interview Refresher
Cracking the Coding Interview - 189 Questions and Solutions
The Coding Interview Bootcamp: Algorithms + Data Structures
Related Data Structure and Algorithm Interview Questions from Javarevisited Blog
Thanks for reading this article so far. If you like this article then please share it with your friends and colleagues. If you have any questions or doubt then please let us know and I'll try to find an answer for you. As always suggestions, comments, innovative and better answers are most welcome.
P. S. - If you are looking for some free data structure and algorithms courses to improve your understanding of Data Structure and Algorithms, then you should also check the Data Structure in Java free course on Udemy. It's completely free and all you need to do is create a free Udemy account to enroll in this course.
- 10 Free Data Structure and Algorithm Courses for Programmers (courses)
- Top 30 Array Coding Interview Questions with Answers (see here)
- How to reverse an array in place in Java? (solution)
- 10 Algorithms Books Every Programmer Should Read (books)
- Top 15 Data Structure and Algorithm Interview Questions (see here)
- How to find a missing number in an array? (answer)
- How to compare two arrays in Java? (answer)
- Top 20 String coding interview questions (see here)
- 50+ Data Structure and Algorithms Problems from Interviews (questions)
- How to remove duplicate elements from an array in Java? (solution)
- How to find all pairs whose sum is equal to a given number in Java (solution)
- 5 Free Data Structure and Algorithms Courses for Programmers (courses)
- Top 30 linked list coding interview questions (see here)
- Top 50 Java Programs from Coding Interviews (see here)
- 100+ Data Structure Coding Problems from Interviews (questions)
Thanks for reading this article so far. If you like this article then please share it with your friends and colleagues. If you have any questions or doubt then please let us know and I'll try to find an answer for you. As always suggestions, comments, innovative and better answers are most welcome.
P. S. - If you are looking for some free data structure and algorithms courses to improve your understanding of Data Structure and Algorithms, then you should also check the Data Structure in Java free course on Udemy. It's completely free and all you need to do is create a free Udemy account to enroll in this course.
Instead of doing this , can we use modulo operator ?
ReplyDeleteif(year%4==0)
SOP("Leap year");
else
SOP("Not a leap year");
Nope u can't,
DeleteCheck the conditions in the given code again !!
import java.util.*;
ReplyDeleteclass leap{
p s v m(s args[])
{
S.o.p("enter year");
int year=new Scanner(System.in).nextInt();
S.o.p("given year is leapyear true or false:"+leapyear(year));
}
public static boolean leapyear(int year)
{
if(year%400==0)
boolean = true;
elseif(year%4==0 && year%100!=0)
boolean = true;
else
boolean = false;
}
}
give me an output
Deletehow about making the code a little shorter?
ReplyDeletepublic static boolean leapyear(int year){
return ( year%400==0 || (year%4==0 && year%100!=0) )
}
hello..!!
ReplyDeleteby java.util.Calender class we got 500,600,700&900 etc years are as leaf year..!! but those are not leaf years ..!!
you mean leap years? can you post your code?
DeleteScanner sc = new Scanner(System.in);
ReplyDeleteSystem.out.print("Enter Year : ");
int year=sc.nextInt();
if((year%4==0&&year%100!=0)||(year%400==0)) {
System.out.println(year+" is leaf year ");
}else {
System.out.println(year+" is not leaf year ");