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

时间:2014-08-31 04:16:06

标签: c#

我正在创建一个程序,收集一些个人信息和人员的工资来计算他们的税后收入。 我正在为菜单使用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;}

它说它总是假的,因为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),他们将从输出中获得不正确的值。

所以澄清一下:如何检查浮点值是空还是跳过?

1 个答案:

答案 0 :(得分:0)

最简单的解决方案是给您的s一个默认的负值,并确保在继续之前它不是负数。

根据您执行此操作的方式/位置,您可以执行不同的操作。如果您正在进行WPF或其他GUI开发,则可以禁用该按钮,直到它全部设置完毕。
如果你想在逻辑中执行它,你可以使用上面的解决方案,或者在选择一个选项时将一些标志设置为true,并且只有在所有标志都设置为true时才会继续,因此只有一个。


编辑:
我已将p更新为s。它真的一样。当他点击d时,要么检查s是否为否定(你可以将其初始化为-1),或者如果你选择了旗帜选项,请确保它的标志为真(它为&#39} ;例如,当您点击s时设置。) 然后,如果你有所有输入,计算,否则写一条消息说他需要输入工资。