Ibn Saeed Ibn Saeed - 6 months ago 38
Java Question

Java Code for calculating Leap Year

I am following "The Art and Science of Java" book and it shows how to calculate a leap year.
The book uses ACM Java Task Force's library.

Here is the code the books uses:

import acm.program.*;

public class LeapYear extends ConsoleProgram {
public void run()
{

println("This program calculates leap year.");
int year = readInt("Enter the year: ");

boolean isLeapYear = ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0));

if (isLeapYear)
{
println(year + " is a leap year.");
} else
println(year + " is not a leap year.");
}

}


Now, this is how I calculated the leap year.

import acm.program.*;

public class LeapYear extends ConsoleProgram {
public void run()
{

println("This program calculates leap year.");
int year = readInt("Enter the year: ");

if ((year % 4 == 0) && year % 100 != 0)
{
println(year + " is a leap year.");
}
else if ((year % 4 == 0) && (year % 100 == 0) && (year % 400 == 0))
{
println(year + " is a leap year.");
}
else
{
println(year + " is not a leap year.");
}
}
}


Is there anything wrong with my code or should i use the one provided by the book ?

EDIT :: Both of the above code works fine, What i want to ask is which code is the best way to calculate the leap year.

Answer

They look the same to me, though note that this line in your code has some redundancy:

else if ((year % 4 == 0) && (year % 100 == 0) && (year % 400 == 0))

could be replaced by:

else if (year % 400 == 0)

If a number is a multiple of 400 then it's automatically also a multiple of 100 and 4.