説明:
日付を考えると、その日のために対応する曜日を返します。
入力は、三の表す整数として与えられday
、month
そしてyear
それぞれ。
次のいずれかの値として答えを返します {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}
。
例1:
入力:日= 31月= 8、年= 2019 出力: "土曜日"
例2:
入力:日= 18月= 7、年= 1999 出力: "日曜日"
例3:
入力:日= 15月= 8、年= 1993 出力: "日曜日"
制約:
- 与えられた日付が年の間に有効な日付です
1971
と2100
。
容認されました
4,400
提出
6472
溶液:
クラスのソリューション{ 公共の文字列のdayOfTheWeek(int型日、int型月、int型年){ // 2019年9月8日の日曜日。 // 我々は、日付差を取得する必要があります。そのように、私たちは、その日は何の日を知ることができるようになります。 int型 NUM_1 = GetNum(日、月、年); INT NUM_2 = GetNum(8,9,2019 )。 // するSystem.out.println(NUM_2-NUM_1); INTのdiff = Math.abs(NUM_2-NUM_1)%7 。 もし(差分== 0 ){ 返す「日曜日」。 } 場合(NUM_2 - NUM_1> 0 ){ 場合(差分== 1 ){ 戻り "土曜日" 。 } そう であれば(差分== 2 ){ 戻り「金曜日」。 } そう であれば(差分== 3 ){ 戻り「木曜日」。 } そう であれば(差分== 4 ){ 戻り「水曜日」。 } そう であれば(差分== 5 ){ 戻り「火曜日」。 } それ以外の 場合(差分== 6 ){ リターン「月曜日」。 } } 他{ 場合(差分== 1 ){ 戻り "月曜日" 。 } そう であれば(差分== 2 ){ 戻り「火曜日」。 } そう であれば(差分== 3 ){ 戻り「水曜日」。 } そう であれば(差分== 4 ){ 戻り「木曜日」。 } そう IF(差分== 5 ){ 戻り "金曜日のカタログ" ; } そう IF(差分== 6 ){ 戻り "土曜日" ; } } のSystem.out.println(GetNum( 3,3,1977 )); システム.out.println(GetNum( 8,9,2019 )); 戻りは "" ; } / * 年与えられ、それは閏年か否かが判定されます。条件: A:4で割り切れ、および100は割り切れすることはできません。または B:400で割り切れます。* / 静的 ブールLEAP(INT A){ 場合(%4 == 0 &&%100!= 0 ){ 戻り 真。 } そう であれば(%400 == 0 ){ 戻り 真。 } 他{ 戻り 偽。 } } 静的 INT GetNum(INT日、int型月、int型年){ HashMapの <整数、整数>マップ= 新しい HashMapの<整数、整数> (); // 1月31日日 //2月うるう年かどうか。(28/29日) // 3月31日日 // 4月30日日 // 5月31日日 // 6月30日日 // 7月31日日 // 8月31日日 // 9月30日日 // 10月31日日 // 11月30日日 // 12月31日日 map.put( 1,31 )。 map.put( 3,31 )。 map.put( 4,30 )。 map.put( 5,31 )。 map.put( 6,30 )。 map.put( 7.31 )。 map.put( 8,31 )。 map.put( 9,30 )。 map.put( 10,31 )。 map.put( 11,30 )。 map.put( 12,31 )。 もし(リープ(年)){ map.put( 2,29 )。 } 他{ map.put( 2,28 )。 } int型の和= 0 。 以下のために(int型 I = 1977;私は++; iの年< ){ 場合(リープ(I)){ 合計 =合計+ 366 。 } 他{ 和 =合計365 。 } } のために(int型 ; iは月<I ++はI = 1 ){ 合計 =合計+ map.get(i)を、 } 和 =和+ 日。 戻り値の合計。 } }