如何检查浮点值中的输入是否为空

本文关键字:输入 是否 何检查 检查 | 更新日期: 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时已设置)
然后,如果你有所有的输入,计算,否则写一条消息说他需要输入工资。