私はゲームHammurabiを作成しています(私のuniの割り当てだけです)。ユーザーにテキストを入力しているかどうかをチェックして、テキストを入力します。私は彼に欲しい数字をユーザに入力させる方法を知っているが、彼が "a"のようなものを入力してプログラムをバグすると、それを修正する方法がわからない。ここでユーザーがテキストを入力するのをブロックする方法
は私が話しているかの例です:
while (acresToBuy < 0)
{
Console.WriteLine("Please type a positive number or 0");
acresToBuy = int.Parse(Console.ReadLine());
}
int cost = trade * acresToBuy;
while (cost > bushels)
{
Console.WriteLine("We have but " + bushels + " bushels of grain, not " + cost);
acresToBuy = int.Parse(Console.ReadLine());
cost = trade * acresToBuy;
}
コードをエラーにしたくない場合は、try/catchブロックを使用してください。適切な数値が得られるまで入力を求める必要がある場合は、入力をintに変換可能かどうかをチェックするループで行い、そうでない場合は数値の要求を繰り返します。 – Edward
これを参考にしてください:http://stackoverflow.com/questions/4804968/how-can-i-validate-console-input-as-integers @Hans Passantの答え。ポイントは、ReadLine()の代わりにReadKey()を使用することで、1文字入力中にキーを検証できます。 – kurakura88
構文解析の代わりにtry parseを使用してください。 tryparseがfalseを返した場合、intを入力せずにもう一度問い合わせてください –