我正在使用U赫尔辛基java课程,并且我遇到了闰年示例的问题。
我使用if和else运算符,我的代码似乎是正确的,但它以闰年的形式返回1700,1500。该示例表明,如果它可以被4整除,并且它也可以被100和400整除,则它是闰年。
import java.util.Scanner;
public class LeapYear {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
System.out.println("Type a year: ");
int year = Integer.parseInt(reader.nextLine());
if ((year % 4 == 0) || ((year % 100 == 0) && (year % 400 == 0))){
System.out.println("The year is a leap year.");
} else {
System.out.println("The year is not a leap year.");
}
}
}
答案 0 :(得分:2)
boolean isLeapYear = false;
if (year % 4 == 0) {
isLeapYear = true;
}
if (year % 100 == 0) {
isLeapYear = false;
}
if (year % 400 == 0) {
isLeapYear = true;
}
答案 1 :(得分:1)
闰年的规则很简单:
您未使用&&
和||
来完成此操作。
只需做这个改变:
if ( (year % 4 == 0 && year % 100 != 0))
//^year divisible by 4 and not by 100
|| (year % 400 == 0)
// ^ year divisible by 400
) {
//rest of your code...
}
删除评论后,代码将为
if ( (year % 4 == 0 && year % 100 != 0))
|| (year % 400 == 0) ) {
//rest of your code...
}
由于您是初学者,我强烈建议您在代码中拆分行以便您理解它。一旦你获得更多练习,你将结束这样的写作:
static boolean isLeapYear(int year) {
return ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0));
}
答案 2 :(得分:0)
您需要更改“如果'声明:
if(((year % 4 == 0) && (year % 100 !=0))||(year % 400 == 0))
在您当前的“如果'声明,如果第一个条件为真,if语句为真,&如果它是假的,那么你的陈述将是假的。第二个条件根本不起任何作用。
答案 3 :(得分:-2)
1700,1500作为闰年返回,因为if检查不正确。
正确的检查是(year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0))
有关该算法的更多信息,请访问:Leap Year Algorithm