日期验证。即使我的日期实际有效,仍会不断循环播放

时间:2018-11-11 04:57:49

标签: c++ c++11 visual-c++ c++-cli do-while

我尝试输入一个无效的日期,即2007年4月31日(4月是日历的第4个月,只有30天),我的代码执行了它应该执行的操作,但是为什么我的while循环会保持循环,甚至尽管我输入了有效日期?

class test
{
    int nmonths;
    int month;
    int day;
    int year;

public: 
    test()
    {
        int x;
        do
        {
            cout << "Enter the date of most recent test (mm dd yyyy) (Ex. 01 
09 2011):" <<endl;
            cin >> month >> day >> year;
            int days;
            if ( month < 1 || month > 12 )
            {
                cout << "INVALID DATE!!!" << endl;

            }
            if ( month == 4 || month== 6 || month == 9 || month == 11)
            {
                days = 30;
                if( day < 1 || day > 30)
                {
                    cout << "INVALID DATE!!!" << endl;
                    x = 0;
                }
            }
            if ( month == 2)
            {
                bool leapyear = (year% 4 == 0 && year % 100 != 0) || (year % 
400 == 0);
                if (leapyear == 0)
                {
                    days = 28;
                    if (day < 1 || day > 28)
                    {
                        cout << "INVALID DATE!!!" << endl;
                        x = 0;
                    }       
                }
                else 
                    days = 29;
                    if ( day < 1 || day > 29 )
                    {
                        cout << "INVALID DATE!!!" << endl;
                        x = 0;
                    }
            }
            else 
            {
                days = 31;
                if ( day < 1 || day > 31)
                    {
                        cout << "INVALID DATE!!!" << endl;
                        x = 0;  
                    }
            }

        }while(x == 0);
};

这是我得到的输出照片 enter image description here

1 个答案:

答案 0 :(得分:1)

您永远不会将score++; $("#score").attr("value", score); 设置为非零值。 尝试在x之前添加x = 1;