-3

ユーザーが年と月を入力し(例:2012 3)、その中の日数を出力するプログラムを作成するのに助けが必要ですが、うるう年かどうかを判断して、そうする必要があります。月の日数を知ることができるため、事前にプログラムすることはできず、独自に計算する必要があります。また、無効な月が入力された場合(1〜12のみ)、または負の整数/小数が入力された場合は、再入力を求めるプロンプトを表示する必要があります。これを始める方法がわかりません!

私は他の方法で始めました、私は尋ねなかったでしょう、

System.out.println( "年と月を入力してください:");

    if (stdin.hasNextInt()) {
         yes = true;
    int year =  stdin.nextInt();
    int month = stdin.nextInt();
    }
        else {
            System.out.println("Invalid Input. ");}

    if (yes = true);

    }
}

2つの数値を別々のINT(2012 3)として取り込む方法と、無効な場合は月を、無効な場合は年を拒否する方法がわかりません。

4

2 に答える 2

1

年がうるう年であるかどうかを判断するには、次の2つの点を確認する必要があります。

  1. 年が4で割り切れるが、100で割り切れない場合は、うるう年です。

  2. 年が100で割り切れる、また400で割り切れる場合、うるう年です。

-upppppをコーディングします

(また、次回はグーグルで->「うるう年かどうかを見分ける方法」)

于 2013-03-01T00:56:59.960 に答える
1

年と月 (1..12) の数値を取り、指定された月の日数を返す関数を書きましょう。

public int numberOfDays (int 年, int 月) {

ほとんどの月は毎年決まった日数を持っているため、次のようになります。

if (month==1||month==3||month==5||month==7||
    month==8||month==10||month==12) return 31;
if (month==4||month==6||month==9||month==11) return 30;

この時点で (関数が返されていない場合)、月は 2 月であるか、無効な月です。月が無効な場合は、明らかに無効な値を返しましょう。

if (month!=2) return -1;

興味深いことに、2 月はうるう年は 29 日、それ以外は 28 日です。1582 年にグレゴリオ暦が導入されて以来、閏年は 4 の倍数の年として定義されていますが、100 の倍数の年も 400 の倍数でない限り閏年ではありません (つまり、1600 年、2000 年、および 2004 年は閏年です。 1900 年と 2003 年はそうではありません)。

if (year>1582) {
 if (month%4==0&&(month%100!=0||month%400==0)) return 29; else return 28;
} 

1582 年より前は、ユリウス暦が有効でした。ユリウス暦では、4 で割り切れる年はうるう年でした。

else {
 //julian calendar
 if (month%4==0) return 29; else return 28;
}

コード呼び出しnumberOfDays

int days;
do {
 System.out.println("blah blah blah");
 int year  =  stdin.nextInt();
 int month = stdin.nextInt();
 days  =  numberOfDays(year,month);
} while (days<0);
于 2013-03-01T01:01:10.570 に答える