我正在编写一个程序,其中一个特点是:不会因为数据输入与接收它的变量类型不同而发生错误。所以我会知道如何允许用户在提示符下只输入一种数据类型。我已经知道如何使用try-catch
,但我不想使用它。
编辑:
用户必须只输入浮点类型的值
请给我一个例子。
我正在编写一个程序,其中一个特点是:不会因为数据输入与接收它的变量类型不同而发生错误。所以我会知道如何允许用户在提示符下只输入一种数据类型。我已经知道如何使用try-catch
,但我不想使用它。
编辑:
用户必须只输入浮点类型的值
请给我一个例子。
由于所有命令行参数都是字符串,因此只能解析它们。如果您期望一个浮点值,您可以执行以下操作:
float f;
bool success = Float.TryParse(parameter, out f);
if(success)
{
....
}
else
{
....
}
如果 TryParse 成功,则该值现在分配给 f。否则,f == 0.0。
控制台只读取文本。如果您想确保用户只输入给定类型的数据,我建议您创建通用方法,例如 GetDate(),它使用 TryParse 方法并循环直到用户输入可以解析为该类型的字符串。
您必须使用自己的命令转义策略,以便将转义一直反馈到调用 GetDate() 的方法,以使其知道用户已转义。
像这样的东西
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
}
不需要 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()
等)。