我有以下 if 语句来确保当天输入有效。但是,如果有人输入了两次无效的日期,它只会保留该值。在继续之前,我如何确保日期有效?一个while循环?
cin>>date.day;
if((date.day>31) || (date.month<1))
{
cout <<"Please input a valid day."<< endl;
date.day = 0;
cin>>date.day;
}
我有以下 if 语句来确保当天输入有效。但是,如果有人输入了两次无效的日期,它只会保留该值。在继续之前,我如何确保日期有效?一个while循环?
cin>>date.day;
if((date.day>31) || (date.month<1))
{
cout <<"Please input a valid day."<< endl;
date.day = 0;
cin>>date.day;
}
使用do
while
结构:
do {
cout <<"Please input a valid day."<< endl;
date.day = 0;
cin>>date.day;
if (cin.fail()) {
cin.clear();
cin.ignore(1024, '\n');
}
} while(cin.fail() || date.day > 31 || date.day < 1);
您正在寻找的是一个while
循环:
cin>>date.day;
while((date.day>31) || (date.month<1))
{
cout <<"Please input a valid day."<< endl;
date.day = 0;
cin>>date.day;
}