2014-09-20 112 views
0

寫入多個if語句是否有區別,只有一個,然後添加else - 如果是?多個if語句或其他if語句

喜歡這裏:

 Console.WriteLine("Guess the number from 1/5"); 
     int number = int.Parse(Console.ReadLine()); 
     if (number == 1) 
     { 
      Console.WriteLine("You guessed wrong"); 
     } 
     if (number == 2) 
     { 
      Console.WriteLine("You guessed wrong"); 
     } 
     /* else if (number == 2) 
     { 
      Console.WriteLine("You guessed wrong"); 
     } 
     * .......up to number 5 
     */ 
     if (number == 3) 
     { 
      Console.WriteLine("You guessed wrong"); 
     } 
     if (number == 4) 
     { 
      Console.WriteLine("You guessed wrong"); 
     } 
     if (number == 5) 
     { 
      Console.WriteLine("You're right!"); 
     } 
     Console.ReadKey(); 

我知道有好多寫這個的方式,但不同的是這裏什麼事情我的唯一的事情。它可能會對性能產生影響...

+1

有兩個區別:a)在一種情況下__all_ _條件將被_測試(性能損失)。 b)邏輯是不同的,如果一個代碼塊改變了數據,其他ifs可能會變成真實的。所以可能發生不同的事情。 Ususally去其他如果構建! – TaW 2014-09-20 21:17:03

+1

不要擔心性能,並首先擔心可讀性。我會更關心你有4個相同的代碼塊。只在運行緩慢時擔心性能。 – weston 2014-09-20 21:22:34

+1

正如mybirthname的回答所示,使用'else'提供了一種優雅的方式來處理沒有找到匹配項的情況。它可能是一個默認或錯誤,取決於您的應用程序,但最好在那裏做點什麼。 – HABO 2014-09-21 00:22:48

回答

1

當您使用多個if時,您將逐個檢查它們。如果您在輸入其中一個時使用if,else if,則不再進行檢查。在你的情況下,使用else if會更好,因爲數字只能有一個這樣的值。

  Console.WriteLine("Guess the number from 1/5"); 
      int number = int.Parse(Console.ReadLine()); 
      if (number == 1) 
      { 
       Console.WriteLine("You guessed wrong"); 
      } 
      else if (number == 2) 
      { 
       Console.WriteLine("You guessed wrong"); 
      }    
      else if (number == 3) 
      { 
       Console.WriteLine("You guessed wrong"); 
      } 
      else if (number == 4) 
      { 
       Console.WriteLine("You guessed wrong"); 
      } 
      else if (number == 5) 
      { 
       Console.WriteLine("You're right!"); 
      } 
      else 
      { 
       Console.WriteLine("Wrong guess"); 
      } 
      Console.ReadKey(); 

`否則如果你會有更好的表現!你也可以用調試來檢查這個東西!你應該學會使用它!

0

一般避免使用一個巨大的if-else語句是使用switch條款

switch(number) 
{ 
    case 1: 
     // this part will run if number is 1 
     break; // break is required after cases 

    case 2: 
     // this part will run if number is 2 
     break; 

    case 3: 
    case 4: 
     // you can also join cases together 
     // this part will run if number is either 3 or 4 
     break; 

    default: 
     // the default case runs when no case was matched 
     break; 
} 

在你的情況,使用switch可以簡化您的代碼以這種

switch (number) 
{ 
    default: 
     Console.WriteLine("You guessed wrong"); 
     break; 

    case 5: 
     Console.WriteLine("You're right!"); 
     break; 
} 
+0

如果您可以將條件映射到數字 – TaW 2014-09-20 21:28:56

+0

*開關盒*不要接近* if-elseif *。僅限於特定情況。 – 2014-09-20 22:10:33

0

在這種情況下,您可以執行以下操作:

Console.WriteLine("Guess the number from 1/5"); 
    int number = int.Parse(Console.ReadLine()); 
    var result = number == 5 ? "You're right!" : "You guessed wrong"; 

    Console.WriteLine(result); 


    Console.ReadKey();