2014-10-01 226 views
1
import java.util.*; 
public class LeapYear 
{ 
    public static void main (String[]args) 
    { 
     Scanner scan= new Scanner (System.in); 
     System.out.println("Please enter in the year"); 
     int year=scan.nextInt(); 
     if (year % 4 ==0) 
     { 
      { 
       if (year % 100 ==0); 
       else 
        System.out.println("The year,"+year+",is a leap year!"); 
      } 
      if(year % 400==0) 
       System.out.println("The year, "+year+",is a leap year!"); 
     } 
     else 
      System.out.println("The year, "+year+",is not a leap year!"); 
    } 
} 

嘿大家好!以上是我爲閏年程序編寫的代碼 - 它似乎運行良好,除非輸入數字(如3000或300),否則JVM會停止並關閉終端窗口。有人請指導爲什麼它不接受這些數字(另外,請原諒我的代碼格式不正確 - 我是新的,並盡力做到最好) 注意:它顯示所有正確的答案時我測試了1900年,1996年,2004年,164年和204年。它不會接受300或3000. 再次感謝!閏年計劃

+3

一條建議,特別是學習Java時,在if語句之後的所有大括號中添加一條建議。如果你有空的if語句和if語句結束的地方,它會使它更清晰。 – mdewitt 2014-10-01 01:30:21

+0

看來你需要閱讀更多關於'||'(或),'&&'(和),'!'(不)或邏輯運算符像'!='(不等於)的關係。這可以讓你創建像'if(year%X == 0 ||(year%Y == 0 && year%Z!= 0)'這樣的表達式) - 試着找出應該用什麼值代替'X ''Y'和'Z'所以它可以解決你的任務。 – Pshemo 2014-10-01 01:44:09

+0

供參考:'java.time.Year(2017).isLeap()' – 2017-06-21 06:32:48

回答

1

你問我們原諒你的格式,但它是你的格式,導致你錯過了這個問題。特別是當你第一次開始時,如果你非常勤奮的格式化,你會發現最有助於理解發生了什麼。建議:即使它們是可選的,也應始終包含大括號,並始終提供每個'if'語句的'else'部分。因此:

if (condition) { 
    action; 
} else { 
    alternative action; 
} 

就你而言,你會在你的第11和12行看到你的句法正確的代碼,但很可能不是你的意思。第11行的大括號似乎不合適,第12行末尾的分號只是代替瞭如果條件成立就會發生的「動作」。

if ((year % 4) == 0) { 
    // could be a leap year 
    if ((year % 100) == 0) { 
     // could be a leap year too 
     if ((year % 400) == 0) { 
      println("yes, this is a leap year ... divisible by 4, 100, AND 400"); 
     } else { 
      // not a leap year ... divisible by 4 and 100, but NOT 400 
     } 
    } else { 
     println("yes, this is a leap year ... it's divisible by 4 but not 100"); 
    } 
} else { 
    // absolutely not a leap year 
} 
3

檢查下列行:

if (year % 100 ==0); 
else 

300%100 == 0,沒有輸出。

1

你可以讓你的代碼更簡潔,如果你這樣做,而不是:

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

此外,請注意這個公式來計算閏年只有「1583」之後的作品多年。

+0

和IMO更新。 +1 – 2014-10-01 01:59:49