2011-03-22 63 views
4

它告訴我它不能將int轉換爲布爾值。 嘗試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 
    } 
} 
+0

是'number'一個布爾什麼?你在哪裏得到關於不能夠將int轉換爲布爾的錯誤? – MusiGenesis 2011-03-22 17:53:22

+0

爲什麼在C#代碼中使用vb樣式的註釋?你是進入C#的VB編碼器嗎?或者一個新手把來自不同語言的樣本放在一起? – 2011-03-22 17:57:45

回答

8

你很可能非常接近使用TryParse,但我猜你忘了在參數out關鍵字:

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

} 
+0

確實; int.Parse()返回一個int值,這就是爲什麼你不能以某種方式評估返回值就無法檢查它是真還是假的原因。 – BrMcMullin 2011-03-22 17:53:06

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

你可以嘗試像以下使用int.TryParse ..

 private void SetNumber(string n) 
     { 
      int parsed = -1; 
      if (int.TryParse(n, out parsed)) //if user input is a number then 
      ... 

有投訴,它不能轉換的intbool是因爲int.Parse()返回類型爲int,而不是原因bool和C#條件語句需要評估bool值。

1

int.Parse會給你一個整數而不是布爾值。

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

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

只要使用此:

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

如果解析成功,successtrue

如果這種情況下i包含數字。

您可能得到了out自變量修飾符錯誤之前。它具有out修飾符,以指示它是一個在被調用的方法中被初始化的值。

1

有很多與此代碼的問題:

  • 使用VB-風格的行註釋('),而不是C#斜槓
  • 解析爲整數返回一個int,而不是一個布爾
  • 你應該使用帶出值的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 
} 
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; 
    } 
} 
+0

忘了TryParse,最近沒有用過C#的例子,請看@Paul Sasik。 – Shakakai 2011-03-22 17:58:28

0

好一兩件事,如果內部語句有一個 'H',而不是一個 'N' 如果(H < 0)。但TryParse應該在那裏工作,假設'數字'是一個類變量。

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

    } 
0
//[email protected] 
//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; 
    } 
+1

請花一分鐘來解釋您所做的更改/改進,以便作者或其他人有機會從中學習。無關:歡迎來到stackoverflow :) – scones 2013-04-07 03:15:16

2

你可以用一些簡單的正則表達式嘗試:

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