以下程序会考虑客户年龄并验证客户是否有资格观看某部电影。我遇到了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>
答案 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更具互动性和/或不言自明。