2017-05-29 142 views
0

我想解決一個課程中的一個簡單的任務,但是它沒有出於某種原因。Java簡單任務

分配說:「一年是閏年,如果它是整除4.但是,如果今年是由100整除,它僅僅是一個閏年時,它也整除400 創建程序檢查給定年份是否是閏年

當我運行代碼我得到的消息:」 隨着輸入1604,你應打印「今年是閏年」,但你印「鍵入一年:​​這一年不是閏年。」

這是我的代碼:

Scanner reader = new Scanner(System.in); 
    System.out.print("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

使用調試器查看'year%4','year%100'和'year%400'的值。 –

+1

只是想*關於輸入4會發生什麼,這是一個閏年,代碼輸出什麼?不要從1604這樣奇怪的案例開始,從簡單的案例開始,並檢查爲什麼他們已經失敗了。 – luk2302

+0

你確定你的程序應該打印'「輸入一年:」'? –

回答

1

if((year % 4 == 0) && (year % 100 == 0 && year % 400 == 0)使用&&應該||。它應該是if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)

1604可以被4整除,但由於您使用的是&&,它還會檢查它是否可以被100和400整除,哪一個不可以被整除。

+1

它應該是'||'在哪裏? – luk2302

+0

編輯我的發言。 – TGKL

+1

'(year%100 == 0 && year%400 == 0)'是多餘的,因爲'year%100 == 0'時'year%100 == 0'爲true。這個整體情況會說1900年是閏年,事實並非如此。所以,這是不正確的。 –