2014-04-25 67 views
-2

我正在編寫一個代碼來查找c#中字符串的總長度。 代碼是作爲遵循c#:沒有預定義函數的字符串長度

class Program 
    { 
     static void Main(string[] args) 
     { 
      string str = "Amit Kumar"; 
      int c = 0; 
      for(int i = 0; str[i]!="\n"; i++) 
      { 

       c++; 
      } 
      Console.WriteLine(c); 
      Console.ReadLine(); 
     } 
    } 

但它示出!=操作者不能被應用到上char或字符串類型的操作數。 你能解決我的問題嗎

+0

問題是你的意思是要做字符'\ n',而不是字符串「\ n」。另外str.Length也是。 –

+0

我不想使用任何預定義的函數(已在我的標題中提到) –

+2

string.Length不是函數 –

回答

5

你不能比較字符串使用!=字符如錯誤中所述。因此改爲使用'\n'。但無論如何,你的字符串不包含換行符,並且永遠不會終止。

我們可以讓您的代碼進行一些修改。使用foreach來循環字符串中的字符。

class Program 
    { 
     static void Main(string[] args) 
     { 
      string str = "Amit Kumar"; 
      int c = 0; 
      foreach(char x in str) 
      { 
       c++; 
      } 
      Console.WriteLine(c); 
      Console.ReadLine(); 
     } 
    } 

我希望這只是教育,因爲有built in functions告訴你一個字符串的長度。

1

你需要這個代碼:

class Program 
    { 
     static void Main(string[] args) 
     { 
      string str = "Amit Kumar"; 
      int c = 0; 
      foreach(char x in str) 
      { 
       if (str[i] != '\n') 
        c++; 
      } 
      Console.WriteLine(c); 
      Console.ReadLine(); 
     } 
    } 
1

mason's answer是完全正常的,但在這裏是一種替代方案:

void Main() 
{ 
    string str = "Amit Kumar"; 
    int c = 0; 
    while(str != "") 
    { 
     str = str.Substring(1); 
     c++; 
    } 
    Console.WriteLine(c); 
    Console.ReadLine(); 
} 

這種方法,直到它留下的空字符串先後刪除字符,然後打印數量刪除了字符。但只是爲了好玩,這可以改寫爲

void Main() 
{ 
    string str = "Amit Kumar"; 
    int c = 0; 
    while(str.Substring(++c) != "") /* do nothing */; 
    Console.WriteLine(c); 
    Console.ReadLine(); 
}