【发布时间】:2012-01-20 17:27:52
【问题描述】:
我对字符串和 int 感到困惑。并且无法验证没有数字和奇怪字符的名称。 a-z 和 A-Z 都很好。我了解 do while 循环和哨兵的使用。我在这里看到了 Regex,但由于某种我不知道的原因,它在我的代码中不起作用。我宁愿选择一个我能理解的简单解决方案。我在我的代码中验证了 int 工作得很好,但是验证名称会得到 bool 和 int 错误。
static void Main(string[] args)
{
int age;
double mileage;
string strInput, name;
bool isValid;
DisplayApplicationInformation();
DisplayDivider("Start Program");
Console.WriteLine();
DisplayDivider("Get Name");
strInput = GetInput("your name");
name = strInput;
Console.WriteLine("Your name is: " + name);
Console.WriteLine();
do
{
DisplayDivider("Get Age");
strInput = GetInput("your age");
isValid = int.TryParse(strInput, out age);
if (!isValid || (age <= 0))
{
isValid = false;
Console.WriteLine("'" + strInput + "' is not a valid age entry. Please retry...");
}
}while (!isValid);
Console.WriteLine("Your age is: " + age);
//age = int.Parse(strInput);
//Console.WriteLine("Your age is: " + age);
Console.WriteLine();
do
{
DisplayDivider("Get Mileage");
strInput = GetInput("gas mileage");
isValid = double.TryParse(strInput, out mileage);
if (!isValid || (mileage <= 0))
{
isValid = false;
Console.WriteLine("'" + strInput + "' is not a valid mileage entry. Please retry...");
}
} while (!isValid);
Console.WriteLine("Your age is: " + mileage);
//mileage = double.Parse(strInput);
//Console.WriteLine("Your car MPT is: " + mileage);
TerminateApplication();
}
【问题讨论】:
-
向我们展示您为验证名称所做的尝试。
-
你能进一步解释你提到的错误吗?您是否在代码中遇到实际异常?如果是这样,它们是什么,它们发生在哪里,以及它们发生时数据的状态是什么?如果没有实际错误,错误的指示是什么?预期行为与观察到的行为是什么?两者在代码中的哪些地方有偏差?
-
如果您可以向 Regex 介绍自己,它比您尝试的要简单得多;)
-
"Your age is: " + mileage- 使用适当的名称是值得的。 -
您是否要验证名称是否包含 Alpha 字符,然后 Validated = true 如果名称具有 AlphaNumeric 或其他字符,例如 $@#%@!()* 则为 False .. 看看Char.All 方法,如果您需要一个简单的示例,我可以为您发布一个.. 对我来说一直很好.. 也发布和有问题的失败名称示例...