do while循环问题

时间:2017-12-02 09:43:45

标签: c# asp.net .net methods

以下程序会考虑客户年龄并验证客户是否有资格观看某部电影。我遇到了CustomerAgeCheck()方法的问题。每次我输入100以上或0以下的年龄时,循环继续无限运行,标签上不显示结果。

<body ng-app="myAPP">
<div ng-controller="employeeCtrl"> 
    <table style="border:1px solid gray">
        <tr>
            <th>Employee Name</th>
            <th>Employee Address</th>
            <th>Employee Salary</th>
        </tr>
        <tr ng-repeat="emp in employees">
            <td>
                {{emp.EmployeeName}}
            </td>
            <td>
                {{emp.EmployeeAddress}}
            </td>
            <td>
                {{emp.EmployeeSalary}}
            </td>
        </tr>
    </table>
</div>

2 个答案:

答案 0 :(得分:0)

do
        {
            ageVerificationLabel.Text = String.Format("Please enter the correct age");

        } while (age < 0 || age > 100);

问题很简单。它是上面的代码块。你没有休息状况。当您在年龄中输入大于100或小于0的值时,其值在循环执行中不会发生变化。因此,while循环总是返回true(因为条件是每当age> 100且age <0时,重复循环)并继续执行。您应该根据需要对其进行编辑以满足终止条件。

执行一次后输入其他值时,由于while循环条件失败,它将终止。

答案 1 :(得分:0)

这是一个非常糟糕的逻辑,特别是因为您正在使用GUI并且有事件可以帮助您。

您所要做的就是添加 NumericUpDown 控件,将min设置为0,将max设置为100,然后收听 ValueChanged 事件。

在这种情况下,您只需使用上面的代码:

    age = (int)NumericUpDownAge.Value;
    if (Movie3RadioButton.Checked && age < 17)
    {
        ageVerificationLabel.Text = String.Format("Access denied - you are too young");
    }
    else if (Movie4RadioButton.Checked || Movie5RadioButton.Checked || Movies6RadioButton.Checked && age < 13)
    {
        ageVerificationLabel.Text = String.Format("Access deniad - you are too young");
    }
    else
    {
        ageVerificationLabel.Text = String.Format("Enjoy your Movie");
    }

您还可以根据NumericUpDown中输入的年龄禁用/启用控件,并使您的GUI更具互动性和/或不言自明。