我想将变量anzahlMinen
的值限制为0到24之间的数字。
我该怎么做? 我知道例外,但我做错了。
static void Main(string[] args)
{
Console.WindowHeight = 23;
Console.WriteLine("Mit wievielen Bomben möchten Sie spielen?");
int anzahlMinen = int.Parse(Console.ReadLine());
答案 0 :(得分:3)
您不需要例外处理:
string eingabe = Console.ReadLine();
int anzahlMinen = 0;
if (!Int32.TryParse(eingabe, out anzahlMinen))
Console.WriteLine("Dies ist keine gültige Zahl!");
else if (anzahlMinen < 0 || anzahlMinen > 24)
Console.WriteLine("Anzahl Minen muss zwischen 0 und 24 liegen!");
为什么你不需要/不要在这里使用例外:
异常用于指示程序流中的意外状态或错误。输入非数字或无效值的用户不是意料之外的,应该进行处理。
此外,创建和捕获异常会对应用程序的性能产生巨大影响,因此应避免不必要地抛出异常。
第三,异常表示错误,不应该永远用作控制程序流的手段!
答案 1 :(得分:1)
您可以使用TryParse来处理非数字值并将其解析为int,然后检查数字是否在0到24之间并在if
中处理错误的数字int i=0;
var isNumber = int.TryParse(eingabe,out i);
if(!isNumber || (i<0 || i>24))
{
Console.WriteLine("Wrong Number");
//break or whatever
//possibly use continue; to go back to first line of while
continue;
}
不要在这里抛出异常,因为如果你可以处理异常情况而不抛弃和捕获,你不应该使用try / catch。尝试捕获是一种昂贵的机制,在这种简单的情况下是一种过度杀伤。