噢,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