【发布时间】:2019-10-01 21:32:55
【问题描述】:
我编写了一个代码,它获取用户在开始日期和结束日期的输入,并检查它们是否有效。在下面的代码中,我有 2 个 do..while 循环。一个用于开始日期,另一个用于结束日期。当执行第一个循环并且不满足条件时,程序不会继续执行另一个 do while 循环。如果我能收到此问题的解决方案,将会很有帮助。
int year, startMonth, endMonth, startDay, endDay;
boolean checkStartDate = false, checkEndDate = false;
Scanner input = new Scanner (System.in);
//checking Start Date
do
{
checkStartDate = false;
System.out.print("Enter the year: ");
year = input.nextInt();
System.out.print("Enter the start month: ");
startMonth = input.nextInt();
System.out.print("Enter the start day: ");
startDay = input.nextInt();
switch (startMonth)
{
case 1:
if(startDay <= 31)
{
checkStartDate = true;
}
break;
case 2:
if(startDay <= 28)
{
checkStartDate = true;
}
break;
case 3:
if(startDay <= 31)
{
checkStartDate = true;
}
break;
case 4:
if(startDay <= 30)
{
checkStartDate = true;
}
break;
case 5:
if(startDay <= 31)
{
checkStartDate = true;
}
break;
case 6:
if(startDay <= 30)
{
checkStartDate = true;
}
break;
case 7:
if(startDay <= 31)
{
checkStartDate = true;
}
break;
case 8:
if(startDay <= 31)
{
checkStartDate = true;
}
break;
case 9:
if(startDay <= 30)
{
checkStartDate = true;
}
break;
case 10:
if(startDay <= 31)
{
checkStartDate = true;
}
break;
case 11:
if(startDay <= 30)
{
checkStartDate = true;
}
break;
case 12:
if(startDay <= 31)
{
checkStartDate = true;
return;
}
default:
checkStartDate = false;
System.out.println("Try again and enter a valid date \n");
}
checkStartDate = false;
} while (checkStartDate = true);
//checking End Date
do
{
checkEndDate = false;
System.out.print("Enter the year: ");
year = input.nextInt();
System.out.print("Enter the start month: ");
endMonth = input.nextInt();
System.out.print("Enter the start day: ");
endDay = input.nextInt();
switch (endMonth)
{
case 1:
if(endDay <= 31)
{
checkEndDate = true;
}
else
{
checkEndDate = false;
System.out.println("Print a valid start day");
}
break;
case 2:
if(endDay <= 28)
{
checkEndDate = true;
}
break;
case 3:
if(endDay <= 31)
{
checkEndDate = true;
}
break;
case 4:
if(endDay <= 30)
{
checkEndDate = true;
}
break;
case 5:
if(endDay <= 31)
{
checkEndDate = true;
}
break;
case 6:
if(endDay <= 30)
{
checkEndDate = true;
}
break;
case 7:
if(endDay <= 31)
{
checkEndDate = true;
}
break;
case 8:
if(endDay <= 31)
{
checkEndDate = true;
}
break;
case 9:
if(endDay <= 30)
{
checkEndDate = true;
}
break;
case 10:
if(endDay <= 31)
{
checkEndDate = true;
}
break;
case 11:
if(endDay <= 30)
{
checkEndDate = true;
}
break;
case 12:
if(endDay <= 31)
{
checkEndDate = true;
return;
}
default:
checkEndDate = false;
System.out.println("Try again and enter a valid date \n");
}
checkEndDate = false;
} while (checkEndDate = true);
System.out.println("correct ");
【问题讨论】:
-
请注意:一旦您完成这项工作并拥有完整、可运行的代码,您可以将其发布到Code Review,我们可以帮助您编写更简洁的代码(例如改进巨人
switches)。
标签: java switch-statement boolean do-while