我使用下面的代碼,找出哪些是一個給定的字符串的長度:獲取字符串長度將無法正常工作
string foo = "Welcome to stack overflow";
int strlen;
for (int i=0; i<foo.length; strlen++){}
Console.WriteLine(strlen.ToString());
但代碼永遠不會離開循環。
我使用下面的代碼,找出哪些是一個給定的字符串的長度:獲取字符串長度將無法正常工作
string foo = "Welcome to stack overflow";
int strlen;
for (int i=0; i<foo.length; strlen++){}
Console.WriteLine(strlen.ToString());
但代碼永遠不會離開循環。
嗯,這很奇怪。
我不明白你的邏輯,你已經有了字符串長度,爲什麼用循環將它應用到另一個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#區分大小寫。 - 喬恩斯基特
哦,這確實奏效。謝謝!爲什麼我不能使用for循環? –
那麼,你可以使用它,但它是不可行的,因爲你只需將已經存在的值應用於變量就可以使用更多的性能。 – Phiter
你永遠增加的「i」,所以「我< foo.length」永遠是真正的
你應該遍歷i
,不超過strlen
:
for (int i=0; i<foo.length; i++){}
你有一個錯字(foo.Length
,不foo.length
)和兩個錯誤:
0
當地variabale聲明(int strlen = 0
)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);
,因爲你正在做的' strlen ++',即''我永遠不會改變。您需要在'for'循環中執行'i ++' – rbm
爲什麼不使用'foo.Length'? – TheLethalCoder
int strlen = foo.Length;有什麼問題? – dasblinkenlight