哦,有两件事:1)它是一个控制台应用程序。2)我知道它是丹麦语,但这并不重要,它只是要求输入的一个例子。文本和变量无关紧要。
好吧,考虑一下这个简单的输入:它实际上可以是任何类型的输入问题。
Console.WriteLine("Hvad er dit kundenummer: (Kun hele tal tilladt)");
string inputKnr = Console.ReadLine();
kundenummer = Convert.ToInt16(inputKnr);
现在,如果客户输入错误怎么办?比如一封信。try & catch 将确保应用程序不会中断,但这不是我想要的解决方案。我想让它说你做错了,再试一次。很经典吧?
但是解决此解决方案的最佳方法是什么?我想过这个:
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() 解决方案好多少。
有没有人有一个聪明的主意?