0

このコード スニペットがあり、メソッドのより良いバージョンが必要です。

このより良いバージョンには ff が必要です:

  • 正しい番号 毎月の日数
  • どの月にも 31 日を許可するべきではありません
  • その年がうるう年の場合は true を返します

コード:

private boolean dateCorrect(int monthNum, int dayNum, int yearNum)
{
if ( (monthNum >=1) && (monthNum <=12) &&
         (dayNum >= 1) && (dayNum <=31) &&
         (yearNum >=1000) && (yearNum <= 9999)
          return false;

switch (monthNum)
        {
        case 1:
        if (leapYear(yearInt))
            return (dayNum >= 1) && (dayNum <=29);
        else
            return (dayNum >=1) && (dayNum <=28);
        case 2:
            return (dayNum >=1) && (dayNum <=31);
        case 3:
             return (dayNum >=1) && (dayNum <=30);
        case 4:
             return (dayNum >=1) && (dayNum <=31);
        case 5:
            return (dayNum >=1) && (dayNum <=30);
        case 6:
            return (dayNum >=1) && (dayNum <=31);
        case 7:
            return (dayNum >=1) && (dayNum <=30);
        case 8:
            return (dayNum >=1) && (dayNum <=31);
        case 9:
            return (dayNum >=1) && (dayNum <=30);
        case 10:
            return (dayNum >=1) && (dayNum <=31);
        case 11:
            return (dayNum >=1) && (dayNum <=30);
        case 12:
            return (dayNum >=1) && (dayNum <=31);
       }
   }
}

private boolean leapYear( int yearNum)
{ 
       return (( yearNum % 4 == 0) && ( yearNum % 100 != 0)) 
        || ( yearNum % 400 == 0); 
}
4

1 に答える 1

1

CalendarAPIを使用してみることができます...

例えば...

Calendar cal = Calendar.getInstance();
cal.clear();
cal.set(yearNum, monthNum - 1, dayNum);

return dayNum == cal.get(Calendar.DATE) && 
    (monthNum - 1) == cal.get(Calendar.MONTH) &&
    yearNum == cal.get(Calendar.YEAR) && (year % 400) == 0;

trueこれは、日付のさまざまな部分が有効で、年がうるう年である場合に返されます...

于 2013-10-15T03:36:12.713 に答える