如何验证用户输入是否为整数?

时间:2011-03-22 17:48:28

标签: c# validation input console

它告诉我它无法将int转换为bool。 试过TryParse,但由于某种原因,参数列表无效。

代码:

private void SetNumber(string n)
{
    // if user input is a number then
    if (int.Parse(n)) 
    {
        // if user input is negative
        if (h < 0)
        {
            // assign absolute version of user input
            number = Math.Abs(n); 
        }
        else 
        {
            // else assign user input
            number = n;
        }
    }
    else
    {
        number = 0; // if user input is not an int then set number to 0  
    }
}

10 个答案:

答案 0 :(得分:13)

您可能使用TryParse非常接近,但我猜您忘记了参数上的out关键字:

int value;
if (int.TryParse(n, out value))
{

}

答案 1 :(得分:6)

请使用:

int i;
bool success = int.TryParse(n, out i);

如果解析成功,successtrue

如果案例i包含该号码。

之前您可能错误地发现了out参数修饰符。它具有out修饰符,表示它是在被调用的方法中初始化的值。

答案 2 :(得分:3)

    private void SetNumber(string n)
    {
        int nVal = 0;

        if (int.TryParse(n, out nVal))
        {
            if (nVal < 0)
                number = Math.Abs(nVal);
            else
                number = nVal;
        }
        else
            number = 0;
    }

答案 3 :(得分:3)

您可以尝试使用一些简单的正则表达式:

  bool IsNumber(string text)
    {
      Regex regex = new Regex(@"^[-+]?[0-9]*\.?[0-9]+$");
      return regex.IsMatch(text);
    }

答案 4 :(得分:1)

您可以使用int.TryParse ..

尝试类似下面的内容
        private void SetNumber(string n)
        {
            int parsed = -1;
            if (int.TryParse(n, out parsed)) //if user input is a number then
            ...

有人抱怨无法将int转换为bool的原因是因为int.Parse()的返回类型是int而不是bool并且在c#条件中需要评估bool值。

答案 5 :(得分:1)

int.Parse将返回一个整数而不是布尔值。

您可以按照建议使用int.TryParse。

int parsedValue;
if(int.TryParse(n, out parsedValue))
{
}

答案 6 :(得分:1)

此代码存在很多问题:

  • 使用VB样式的行注释(')代替C#斜杠
  • Parse for integer返回一个int而不是一个bool
  • 您应该使用带有输出值的TryParse
  • h似乎根本没有效果。它是n?
  • 的类型
  • 在类范围内定义的函数范围(数字)似乎没有定义的变量?

但试试这个:

private void SetNumber(string n)
{
    int myInt;
    if (int.TryParse(n, out myInt)) //if user input is a number then
    {
        if (myInt < 0) //if user input is negative
            number = Math.Abs(n); //assign absolute version of user input
        else //else assign user input
            number = n;
    }
    else number = 0; //if user input is not an int then set number to 0
}

答案 7 :(得分:0)

int.Parse会将字符串转换为整数。目前你在if语句中有它,所以它将int.Parse的返回值视为bool,而不是。

这样的事情会起作用:

private void SetNumber(string n)
{
    int num = 0;
    try{
        num = int.Parse(n);
        number = Math.Abs(num);
    }catch(Exception e){
        number = 0;
    }   
}

答案 8 :(得分:0)

一方面,如果(h <0),内部if语句有'h'而不是'n'。但TryParse应该在那里工作,假设'number'是一个类变量。

 private void SetNumber(string n)
    {
        int temp;
        bool success = Int32.TryParse(n, out temp);

        // If conversion successful
        if (success)
        {
            // If user input is negative
            if (temp < 0)
                number = Math.Abs(temp); // Assign absolute version of user input
            else // Assign user input
                number = temp;

        }
        else
        {
            number = 0;
        }

    }

答案 9 :(得分:0)

//vinojash@gmail.com
//In my knowledge i did this in simple way thanks for watch my code 
 static void Main(string[] args)
    {
        string a, b;
        int f1, f2, x, y;
        Console.WriteLine("Enter two inputs");
        a = Convert.ToString(Console.ReadLine());
        b = Console.ReadLine();
        f1 = find(a);   
        f2 = find(b);   

        if (f1 == 0 && f2 == 0)
        {
            x = Convert.ToInt32(a);
            y = Convert.ToInt32(b);
            Console.WriteLine("Two inputs r number \n so tha additon of these text box is= " + (x + y).ToString());
        }
        else
            Console.WriteLine("One or tho inputs r string \n so tha concadination of these text box is = " + (a + b));
        Console.ReadKey();

    }
        static int find(string s)
        {
        string s1 = "";
        int f;
         for (int i = 0; i < s.Length; i++)
            for (int j = 0; j <= 9; j++)
            {
                string c = j.ToString();
                if (c[0] == s[i])
                {
                    s1 += c[0];
                }
            }

        if (s==s1)
            f= 0;
        else
            f= 1;

        return f;
    }