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

它告诉我它无法将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 } } 

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

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

只需使用:

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

如果解析成功,那么success就是true

如果那种情况i包含号码。

你可能之前得到了out参数修饰符错误。 它有out修饰符来表示它是一个在被调用的方法中初始化的值。

  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; } 

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

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

您可以使用int.TryParse尝试类似下面的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#conditionals需要评估bool值。

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

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

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

这段代码有很多问题:

  • 使用VB样式的行注释(’)而不是C#斜杠
  • Parse for integer返回一个int而不是一个bool
  • 你应该使用带有out值的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 } 

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; } } 

好吧,有一点,如果(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; } } 
 //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; }