嘿伙计们我已经得到了这个循环,它正在检查用户输入日期的有效输入。我需要在这个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();
}
顺便说一句,我不能使用任何方法或课程,这是一项家庭作业。
答案 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的方法。
您可以构建大量此类小帮助方法,以检查问题的不同方面。最后,你将这些小碎片放在一起进行所有必要的检查。