检查输入是否存在负整数错误

检查输入是否存在负整数错误

问题描述:

我正在尝试制作一个程序,该程序将从用户处取一个整数并翻转多次硬币。但是,当用户输入负整数时,程序会遇到“溢出异常”。我怎样才能让用户只能输入一个正整数?检查输入是否存在负整数错误

int newLoop = 0; 
     int Number; 
     string answer1 = default(string); 
     string text = default(string); 
     Random newNumber = new Random(); 
     Console.WriteLine("How many times do you want the coin to flip?\n"); 
     string line = Console.ReadLine(); 
     int value; 
     if (int.TryParse(line, out value)) 
     { 
      string[] myValues = new string[value]; 
      while (newLoop < value) 
      { 
       Number = newNumber.Next(0, 2); 
       if (Number == 0) 
       { 
        answer1 = "Tails\n"; 
        myValues[newLoop] = "Tails"; 
       } 
       else 
       { 
        answer1 = "Heads\n"; 
        myValues[newLoop] = "Heads"; 
       } 
       text = " " + answer1; 
       foreach (char u in text) 
       { 
        Console.Write(u); 
       } 
       newLoop++; 
      } 
      Console.ReadLine(); 
      Title(); 
      Question(); 
     } 
     else if (line == "") 
     { 
      Console.WriteLine("\nThat is not a valid number..."); 
      Console.WriteLine("Please try again:"); 
      Console.WriteLine("~enter to continue~"); 
      Console.ReadLine(); 
      coinTask(); 
     } 
     else 
     { 
      Console.WriteLine("\nThat is not a valid number..."); 
      Console.WriteLine("Please try again:"); 
      Console.WriteLine("~enter to continue~"); 
      Console.ReadLine(); 
      coinTask(); 
     } 
+0

就检查它是大于零?你在哪一行溢出?你调试了你的代码吗? –

+0

您可以强制Math.Abs​​输入为正值,或者只检查值是否大于0并给出错误消息 – Steve

更改线路:

int value; 
if (int.TryParse(line, out value)) 

到:

uint value; 
if (uint.TryParse(line, out value)) 

这样,你只能接受0和正整数。

您可以检查该值已解析后:

if (int.TryParse(line, out value) && value >= 1)