2016-04-15 66 views
-3

我使用下面的代碼,找出哪些是一個給定的字符串的長度:獲取字符串長度將無法正常工作

string foo = "Welcome to stack overflow"; 
int strlen; 

for (int i=0; i<foo.length; strlen++){} 

Console.WriteLine(strlen.ToString()); 

但代碼永遠不會離開循環。

+5

,因爲你正在做的' strlen ++',即''我永遠不會改變。您需要在'for'循環中執行'i ++' – rbm

+3

爲什麼不使用'foo.Length'? – TheLethalCoder

+1

int strlen = foo.Length;有什麼問題? – dasblinkenlight

回答

3

嗯,這很奇怪。

我不明白你的邏輯,你已經有了字符串長度,爲什麼用循環將它應用到另一個int?

但是,我是誰來判斷?

循環上的問題是,您不會增加i的值。
而是執行此操作:

for (int i=0; i<foo.Length; i++) 
{ 
    strlen++; 
} 

您可以刪除循環和這樣做是爲了你的代碼:

string foo = "Welcome to stack overflow"; 

Console.WriteLine("String length: " + foo.Length.ToString()); 

編輯:

正如在評論中提到:

長度屬性必須是第一個字母大寫,因爲C#區分大小寫。 - 喬恩斯基特

+0

哦,這確實奏效。謝謝!爲什麼我不能使用for循環? –

+0

那麼,你可以使用它,但它是不可行的,因爲你只需將已經存在的值應用於變量就可以使用更多的性能。 – Phiter

1

你永遠增加的「i」,所以「我< foo.length」永遠是真正的

1

你應該遍歷i,不超過strlen

for (int i=0; i<foo.length; i++){} 
1

你有一個錯字foo.Length,不foo.length)和兩個錯誤

  1. 不要忘記指定0當地variabale聲明(int strlen = 0
  2. 不要忘記計數器加一(i++

類似的東西:

string foo = "Welcome to stack overflow"; 

// error: assign 0 to strlen 
int strlen = 0; 

// Typo: foo.Length instead of foo.length 
// error: do not forget to increment "i" as well as "strlen" 
for (int i = 0; i < foo.Length; strlen++, i++) {} 

// 25 
Console.WriteLine(strlen.ToString()); 

測試:

// 25 
Console.WriteLine(foo.Length);