未正确检查日期结构

时间:2015-05-06 15:22:31

标签: c++ struct while-loop boolean

我有一些C ++代码:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
<script language="C#" runat="server">

        public void Ajouter(Object sender, EventArgs e)
        {
            ViewData["name"] = dateForm.Text;
            ViewData["date"] = dateForm.Text;
            ViewData["user"] = userForm.Text;
        }

 </script>


<!DOCTYPE html>
<html>
<head id="Head1" runat="server">
    <meta name="viewport" content="width=device-width" />
    <title>AjouterForm</title>
</head>
<body>
    <h1>Ajouter un produit</h1>
    <div>
        <form id="form1" runat="server"  action="Consulter" defaultbutton="bouton1" method="get">
    <div>
    <asp:TextBox placeholder="Name" runat="server" ID="nameForm"/></br>
    <asp:TextBox placeholder="Date" runat="server" ID="dateForm"/></br>
    <asp:TextBox placeholder="User" runat="server" ID="userForm"/></br>

    <asp:Button runat="server" text="Envoyer" ID="bouton1" onClick="Ajouter"/>
    <asp:Label runat="server" ID="label1" />

</div>
</form>
    </div>
</body>
</html>

我知道is_valid_date函数有效,但是当我测试 之后<=>当天输入的生日时,由于某种原因,它通过了is_before测试并且从未进入while循环要求用户输入有效的生日。任何建议将不胜感激!提前谢谢!

编辑:我测试的具体输入是:对于今天的日期,我输入05/06/2015,对于生日,我输入05/07/2015。然后打印生日,这意味着它跳过int main()中的while循环,它不应该这样做,因为生日来自当前日期之后。

2 个答案:

答案 0 :(得分:0)

你的情况错了:

while(!valid && !before)

如果输入的内容无效位于当前日期之后,您的情况将尝试获得新生日。我想你想要:

while(!valid || !before)

如果输入的内容无效在当前日期之后,则会有新的生日。

答案 1 :(得分:0)

您应该将while(!valid && !before)更改为while(!valid || !before)

只要出生日期无效出生日期在当前日期之后,您就想留在循环中。目前,如果您输入的是当前日期之后的有效日期,它将跳出循环,因为第一个条件为假(日期有效)。