2017-05-07 68 views
1

我希望能夠阻止人們進入比0和19多個條件的TryParse

使用的TryParse之間的int值其他任何東西,我可以保證比可以只輸入整數值。使用標準的while循環,我可以確保只能輸入0到19之間的整數,但我正在努力合併爲兩個值。

到目前爲止,我通過分離兩個循環來實現它的唯一方式,它看起來很混亂。像這樣:

 while (!(int.TryParse(Console.ReadLine(), out quant))) 
     { 

      Console.Clear(); 
      Console.WriteLine("Current total: £" + total.ToString("0.00\n")); 
      Console.WriteLine("That is an invalid quantity. Please enter the quantity again"); 

     } 

     while ((quant >= 20 || quant < 0)) 
     { 
      Console.Clear(); 
      Console.WriteLine("Current total: £" + total.ToString("0.00\n")); 
      Console.WriteLine("That is an invalid quantity. Please enter the quantity again"); 


      while (!(int.TryParse(Console.ReadLine(), out quant)))    { 


       Console.Clear(); 
       Console.WriteLine("Current total: £" + total.ToString("0.00\n")); 
       Console.WriteLine("That is an invalid quantity. Please enter the quantity again"); 

      } 
     } 

這是我可以得到兩個值循環如果重複輸入一個不正確的值的唯一方法。

如何使用多個值來使用單個循環?

+0

'而'? –

+0

我試過了,除非錯誤輸入,否則無法使用。 – JavaNovice

回答

3

可以在一個循環結合條件:(!(int.TryParse(到Console.ReadLine(),出定量))||定量> 19 ||定量<0)

// we want: Console.ReadLine() being an integer value (quant) and 
//   quant >= 0 and 
//   quant <= 19 
while (!(int.TryParse(Console.ReadLine(), out quant) && 
     quant >= 0 && 
     quant <= 19)) { 
    Console.Clear(); 

    Console.WriteLine("Current total: £" + total.ToString("0.00\n")); 
    Console.WriteLine("That is an invalid quantity. Please enter the quantity again"); 
} 

// quant is integer and within [0..19] range 
+0

你好。是的,我知道我可以將它們結合起來,但它不適合我(這就是爲什麼我留下了我張貼的混亂!)。 我會嘗試你的代碼。我一定錯了什麼地方的東西! – JavaNovice

+0

@Matt:可以,請你在「這對我不起作用」中更具體一點 - 簡單條件組合有什麼問題? –

+0

好吧,我試過你的代碼,它的工作原理。也許是因爲我使用OR而不是AND? 無論哪種方式,謝謝。 – JavaNovice