如何允许用户在命令行上只输入一种类型的数据



我正在编写一个程序,其中一个特点是:不会因为数据输入与接收数据的变量类型不同而发生错误。因此,我知道如何允许用户在提示下只输入一种数据类型。我已经知道如何使用try-catch,但我不想使用它。

编辑:

用户必须只输入浮动类型

请给我举个例子

由于所有命令行参数都是字符串,因此只能解析它们。如果您期望一个浮动值,您可以执行以下操作:

float f;
bool success = Float.TryParse(parameter, out f);
if(success)
{
    ....
}
else
{
    ....
}

如果TryParse成功,则现在将该值分配给f。否则,f==0.0。

类似的东西

string usrInput = Console.ReadLine();
while(!isValid(usrInput))
{
   Console.Write("Invalid Input. Enter a valid value");
   usrInput = Console.ReadLine();
}
//continue to use input here

编写您的有效函数

private void isValid(string input)
{
   //use regex
   //use something else
   //if test passed return true 
   //return false
}

控制台只读取文本。如果你想确保用户只输入给定类型的数据,我建议你创建通用方法,例如GetDate(),它使用TryParse方法并循环,直到用户输入一个可以解析为该类型的字符串。

您必须使用自己的命令转义策略,这样它才能将转义一直反馈到调用GetDate()的方法,让它知道用户转义了。

不需要try-catch块的最简单方法是尝试解析输入,并根据输入是否成功解析来做出控制流决策。例如,当用户输入而不是成功解析时,您可以不断要求有效输入:

float myValue;
do 
{
    Console.WriteLine("Enter a valid value: ");
} while (!Float.TryParse(Console.ReadLine(), out myValue))
// myValue contains a valid float, do something with it now...
float percent = myValue / 100.0f;

所有.NET的数字类型都包括一个TryParse方法,因此如果您有其他输入类型,您可以相应地更改示例(Integer.TryParse()Double.TryParse()等)。

相关内容

  • 没有找到相关文章

最新更新