1

我想将变量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());
4

2 回答 2

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!");

为什么你不需要/不应该在这里使用异常:

异常用于指示程序流中的意外状态或错误。用户输入非数字或无效值并非意外,应予以处理。

此外,创建和捕获异常会对应用程序的性能产生巨大影响,因此您应该避免不必要地抛出异常。

第三,异常表示错误,永远不应该用作控制程序流程的手段!

于 2013-11-08T08:09:38.423 回答
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。Try catch 是一种昂贵的机制,在这种简单的情况下是一种矫枉过正的做法。

于 2013-11-08T08:08:27.443 回答