有一个简单的控制台应用程序,要求用户输入多个值。输入通过console.readline()读取。实施例
Name: Fred //string
Lastname: Ashcloud //string
Age: 28 //int
我想确保输入int和double类型,如果用户输入垃圾,请让他重复该过程。
例如,如果用户输入年龄为期望的“28岁”,则应用程序将崩溃。检查这些输入的最佳方法是什么?
现在我只能想到:
while (!Int32.TryParse(text, out number))
{
Console.WriteLine("Error write only numbers");
text = Console.ReadLine();
}
还有其他办法吗?如果想要向用户提供更详细的反馈,请尝试捕获语句?在那种情况下如何?
答案 0 :(得分:2)
对于控制台应用程序,您的代码非常好。
但是,您可能希望将其抽象为可重用的函数,以便您可以在不重复代码的情况下读取不同的数字。
此外,您可能希望为用户提供某种取消方式。
答案 1 :(得分:1)
using System.Text.RegularExpressions;
int GetNumberFromString( string str_age )
{
Regex number = new Regex("[0-9][0-9]?");
Match n = number.Match(str_age);
if (n.Value != "")
return System.Convert.ToInt16(n.Value, 10);
else
return -1;
}
这将解析除年龄之外的任何数据,如果没有年龄,则返回-1。 这也假设年龄为0-99岁。
答案 2 :(得分:1)
正则表达式很好。
Regex age = new Regex(@"^[0-9]*$");
while (!age.match(age_from_console)) {
Console.WriteLine("Age Invalid, try again ->");
}
答案 3 :(得分:1)
实际上,你的代码很好。我会添加负数检查,也许还有大量检查。