public static void main(String[] args){
boolean year = isLeapYear(9999);
System.out.println("Is Leap Year: " year);
}
public static boolean isLeapYear(int year){
int rem4 = year % 4;
int rem100 = year % 100;
int rem400 = year % 400;
if ((year >= 1 && year <= 9999) && (rem4 == 0) && (rem100 == 0 && rem400 == 0) || (rem100 != 0) && (rem4 == 0)){
return true;
}
return false;
}
當我輸入負數年份(到目前為止只有 -1024)時,我的范圍條件不起作用。但是,如果我輸入任何其他負閏年,它就會起作用(-2020)。所以我不知道我可能遺漏了什么,或者演算法的結構是否正確。任何幫助將不勝感激。
預期的是,當我輸入一個不是閏年的年份時,如果它是一個負閏年,它會回傳 false。
uj5u.com熱心網友回復:
我知道簡明扼要被認為很酷,但這種事情通常最好用多個簡單的條件來完成。特別是當你第一次開發它的時候。
if (year < 1 || year > 9999)
return false;
if (rem4 != 0)
return false;
if (rem100 == 0 && rem400 != 0)
return false;
return true;
也許:
if (year >= 1 && year <= 9999)
if (rem4 == 0) {
if (rem100 == 0)
return (rem400 == 0);
return true;
return false;
if無論哪種方式都比一個又大又長的復雜陳述句更容易除錯。
uj5u.com熱心網友回復:
不太確定,但也許是因為當
|| (rem100 != 0) && (rem4 == 0))回傳一個true陳述句時,你的整個函式回傳true,否定了你的 if 陳述句的整個第一部分。
uj5u.com熱心網友回復:
作為|| 覆寫正面驗證部分,只需在條件的另一部分添加相同的驗證...
(year >= 1 && year <= 9999 && rem4 == 0 && rem100 == 0 && rem400 == 0 || year >= 1 && year <= 9999 && rem100 != 0 && rem4 == 0)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/533655.html
標籤:爪哇算法if语句闰年
下一篇:尋找具有最佳標準的排列的演算法
