在while循环中添加闰年中的日期检查

时间:2016-11-26 08:12:49

标签: java

嘿伙计们我已经得到了这个循环,它正在检查用户输入日期的有效输入。我需要在这个while循环中添加一个检查,如果它不是闰年不能超过28,如果它是闰年,只有月份是2月,不能超过29,意味着月份= 2。

我该怎么办?我知道要检查它是否是闰年我使用此语句:if ((year%4 == 0 && year%100 !=0) || (year%400 == 0))

这是我的循环:

while ((day>31 || day<=0) || (month>12 || month<=0) || (year<=0))          
    {                                                                             
    System.out.println("The original date/month/year is invaild");
    System.out.println("Please enter 3 integers to represent a valid date:");
    day = scan.nextInt();
    month = scan.nextInt();
    year = scan.nextInt();
    }
顺便说一句,我不能使用任何方法或课程,这是一项家庭作业。

1 个答案:

答案 0 :(得分:1)

不确定这是否是您所要求的,但您不需要直接将所有内容都推送到while状态。你可以这样做:

 boolean isDateValid = false;
 while (! isDateValid) {
    System.out.println("The original date/month/year is invaild");
    System.out.println("Please enter 3 integers to represent a valid date:");
    day = scan.nextInt();
    month = scan.nextInt();
    year = scan.nextInt();
    isDateValid = ... that lengthy conditition
 }

当然,这并不是很好,因为用户首先会收到一条没有意义的错误消息。因此,我们可以改变事物并使用do / while循环:

 boolean isDateValid = false;
 do {
    System.out.println("Please enter 3 integers to represent a valid date:");
    day = scan.nextInt();
    month = scan.nextInt();
    year = scan.nextInt();
    isDateValid = ... that lengthy conditition
    if (!isDateValid) {
      System.out.println("The original date/month/year is invalid; please try again");
    }
 } while (!isDateValid)

对于实际的检查,只需从你脑海中的事物中分离出来 - 需要检查哪些方面,例如:

public static boolean isLeapYear(int year) {

如果年份实际上是闰年,则返回true的方法。

您可以构建大量此类小帮助方法,以检查问题的不同方面。最后,你将这些小碎片放在一起进行所有必要的检查。