映画のエンドロール観る派?観ない派?

大学の講義で出題せれたのですが、javaでそれぞれ1901年、2004年、2007年、2009年の前のうるう年を表示しろということで、うるう年の検索、判定のプログラムまでは組めたのですが、前の年ということで、うるう年である2004年で表示さなくてはいけないのが1996年なのですが、どうしても2004年と表示されてしまいます。
色々と調べてみたのですが分からず、初めての投稿をさせていただきました。
どう組めば良いか教えてください。下が組んだプログラムです。
public static int preleap(int n){
if((n%4 == 0) & (n%100 != 0) ||n%400 == 0){
return n;
}else{
return preleap(n-1);
}
}

A 回答 (2件)

&が&&だとして。



このプログラムだと、 preleap(n)と指定したら、n年から調べ始めている、ということはおわかりですか?
指定されたn年は判定の必要がないので、その前の年から調べればよいはずです。

ちょっと変えて、「nの一年前がうるう年かどうか」を調べるプログラムならどうなるでしょう?

やりかたは、いくつかあります。
    • good
    • 0
この回答へのお礼

こんな夜遅くの質問に早いお返事ありがとうございます。
その年を含みたくないなら、その前の年から考えろということですね
おかげでうまく表示することができました。
ありがとうございます。

お礼日時:2010/11/25 01:36

4で割り切れると閏年、但し100で割り切れると閏年ではない、が400で割り切れると閏年


public static int preleap(int n){
if ( 0 == n%4 ) {
if ( 0 == n%100 ) {
if ( 0 == n%400 ) {
return n;
} else {
return preleap(n-1);
}
} else {
return n;
}
} else {
return preleap(n-1);
}
}
    • good
    • 0
この回答へのお礼

お早いお返事ありがとうございます。
けれどもすみません、これだとやっぱり2004年をnとしたとき値が2004と返ってきてしまいました。
けれども解決はできましたので、ありがとうございました。

お礼日時:2010/11/25 01:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報