ああ、2 つのこと: 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() ソリューションよりも優れているようには見えません。
誰かが賢い考えを持っていますか?