如何检查浮点值中的输入是否为空
本文关键字:输入 是否 何检查 检查 | 更新日期: 2023-09-27 18:20:03
我正在创建一个程序,该程序收集一些个人信息和个人工资,以计算他们的税后收入。我在菜单上使用switch语句。看起来像这样:
Get a person’s details (p)
Get the Salary (s)
Calculate and display (d)
Exit (x)
我希望用户按顺序完成这些操作,因此在输入他们的工资或试图计算他们的工资之前,他们必须输入自己的详细信息。例如:全名是他们必须填写的第一个个人详细信息。此时,用户已经选择(d)来显示他们的收入,但他们将被阻止,因为他们没有填写个人详细信息。
Console.WriteLine("'nUser selected to calculate and display their earnings'n");
if (full_name == "")
{
Console.WriteLine("Error: Please enter personal details before attempting to display your pay'n");
break;
}
这很好,因为它是一个字符串,所以如果它为空,它们会返回到原始菜单。
但我也想阻止他们选择选项(d),如果他们没有填写选项,他们的工资存储在浮动中。如果我尝试这个:
if (annual_salary == null)
{break;}
它表示它将始终为false,因为float类型的值永远不等于float类型中的null。
这是我对选项的while循环,它在用户选择此选项时收集数据。
while (valid == false)
{
Console.Write("Enter your annual salary: > ");
vtemp = Console.ReadLine();
// Validate the data entered
if (vtemp == "")
{
Console.WriteLine("'nError : Annual salary cannot be empty. Please try again...'n");
}
else
// Check if data is a valid integer
returnVal = float.TryParse(vtemp, out annual_salary);
if (returnVal == false)
{
Console.WriteLine("'nError : Please enter numbers only. Please try again...'n");
}
else
// Check value is positive
if (i < 0)
{
Console.WriteLine("'nError : Annual salary must be positive. Please try again...'n");
}
else
{
valid = true;
break;
}
}// End while
但是,如果用户从未选择(s),并在填写(p)后决定直接进入(d),他们将从输出中获得不正确的值。
因此需要澄清的是:如何检查浮点值是否为空或跳过?
最简单的解决方案是给s
一个默认的负值,并在继续之前确保它不是负值。
根据你执行的方式/地点,你可以做不同的事情。如果您正在进行WPF或其他GUI开发,您可以禁用该按钮,直到它全部设置好为止
如果你想在逻辑上做到这一点,你可以使用上面的解决方案,或者在选择一个选项时,将一些标志设置为true,只有当所有标志都设置为true时,你才会继续。
编辑:
我已将p
更新为s
。真的一样。当他点击d
时,请检查s
是否为负(您可以将其初始化为-1),或者如果使用flag选项,请确保其标志为true(例如,当您点击s
时已设置)
然后,如果你有所有的输入,计算,否则写一条消息说他需要输入工资。