-1

我有以下 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;
      }
4

2 回答 2

1

使用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);
于 2013-03-11T04:51:32.647 回答
0

您正在寻找的是一个while循环:

cin>>date.day;
while((date.day>31) || (date.month<1))
{
    cout <<"Please input a valid day."<< endl;
    date.day = 0;
    cin>>date.day;
}
于 2013-03-11T04:50:27.283 回答