2013-07-27 116 views
1

我想知道是否有辦法做這樣的事情在C#:C#switch語句驗證

some loop here 
{ 
    Console.WriteLine("Please enter a or b"); 
    switch (Console.ReadLine().ToLower()) 
    { 
     case "a": 
      //some code here 
      break; 
     case "b": 
      //some code here 
      break; 
     default: 
      Console.WriteLine("Error, enter a or b"); 
      repeat loop 
    } 
} 

這可能是一個愚蠢的問題,但類似的東西,將我的任務有很大好處。

回答

3

爲什麼不。運行只有在輸入a或b時才存在的while循環。

bool condition = false; 

Console.WriteLine("Please enter a or b"); 
string str = string.Empty; 
while (!condition) 
{ 
    str = Console.ReadLine().ToLower(); 
    switch (str) 
    { 
     case "a": 
      //some code here 
      condition = true; 
      break; 
     case "b": 
      //some code here 
      condition = true; 
      break; 
     default: 
      Console.WriteLine("Error, enter a or b"); 
      break; 
    } 
} 
Console.WriteLine("You have entered {0} ", str); 
Console.ReadLine(); 
+0

您能否提供一個使用代碼的例子? – SuperDicko

+0

@ user2624792:閱讀我更新的答案。 –

+0

我覺得自己像個白癡。非常感謝你:) – SuperDicko

1

這樣的事情呢?

var acceptedValues = new List<string>() 
{ 
    "a", 
    "b", 
}; 

Console.WriteLine("Please enter {0}", string.Join("or", acceptedValues)); 
var enteredValue = string.Empty; 
do 
{ 
    enteredValue = Console.ReadLine().ToLower(); 
} while (!acceptedValues.Contains(enteredValue)); 
+0

請解釋爲什麼這是downvoted。迭代集合比switch語句更有效率。 – Jay

+0

我沒有downvote,但'whilee'循環的作用域沒有'enteredValue'? – pcnThird

+0

是的,很容易修復。謝謝你的收穫。 – Jay