2017-05-07 9 views
1

は、私は、私は整数値のみを入力することができるより確実にすることができるtryParseを使用して、0〜19複数の条件は

間のint型の値以外のものを入力する人を止めることができるようにしたいtryParse。標準whileループを使うと、0から19までの整数しか入力できないことを保証できますが、私は2つの値に結合するのに苦労しています。

これまでのところ、2つのループを分けることで動作する唯一の方法であり、乱雑に見えます。これと同じように:

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

      } 
     } 

これは私が間違った値が繰り返し入力された場合をループに2つの値を得ることができる唯一の方法です。

複数の値を使用して1つのループを使用するにはどうすればよいですか?

+0

'ながら、 '? –

+0

私はそれを試みました、そして私が何かミスタイプしない限り、それは動作しません。 – JavaNovice

答えて

3

あなたは1つのループで条件を組み合わせることができます(!(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

さて、私はあなたのコードを試して、それは動作します。おそらく、私はANDの代わりにORを使用していたからでしょうか? いずれにしても、ありがとうございます。 – JavaNovice