噢,2件事: 1)它是一个控制台应用程序。 2)我知道这是丹麦语,但它并不重要,它只是一个要求输入的例子。文本和变量无关紧要。验证C#中readline输入的最佳方法是什么?
好吧,考虑一下这个简单的输入: 它可能是任何一种输入问题。
Console.WriteLine("Hvad er dit kundenummer: (Kun hele tal tilladt)");
string inputKnr = Console.ReadLine();
kundenummer = Convert.ToInt16(inputKnr);
现在,如果客户输入了错误的东西呢?如一封信。 尝试&捕获将确保应用程序不会中断,但这不是我想要的解决方案。 我希望它说你做错了,再试一次。 很经典的权利?
但是,解决此问题的最佳方法是什么?我想到了这个:
bool fangetKundenummer = true;
while (fangetKundenummer)
{
Console.WriteLine("Hvad er dit kundenummer: (Kun hele tal tilladt)");
string inputKnr = Console.ReadLine();
try
{
kundenummer = Convert.ToInt16(inputKnr);
fangetKundenummer = false;
}
catch
{
Console.WriteLine("Fejl. Prøv igen");
}
}
但它似乎不是正确的方式来做到这一点。
此外,只是提及它,我正在玩的这个小应用程序有连续4个输入问题。这意味着这个令人讨厌的while()循环的4倍。
你也可以写一个函数。像这样的东西(没有理由这样做的正确方法,它只是为了说明一个概念):
static void verifyInput()
{
try
{
Console.WriteLine("question");
input = Console.ReadLine();
kundenummer = Convert.ToInt16(input)
}
catch
{
Console.WriteLine("Wrong. Do it over");
verifyInput(); //start the function all over
}
}
但是你必须写的每一个功能,每输入一个问题,即使他们可能会问,究竟对于相同的! (也许所有人都要求一个整数;但是有一个不同的问题和变量)。
这似乎不比while()解决方案好得多。
有没有人有一个聪明的想法?
不完全是一个“聪明的想法”,而是正确的答案。 – 2009-02-02 14:34:04