2015-10-25 53 views
0

請幫忙。爲什麼這個for-loop工作?

此代碼簡化版,工作:

for (i = 0; i == userWhoIsInLineArray.GetNumberOfUsersOnline() - 1; i++) { 
    Log.d("DATA-----|", "UserName- " 
     + userWhoIsInLineArray.GetUserName(i) 
     + " UserHref- " 
     + userWhoIsInLineArray.GetUserAccountHref(i)); 
} 

當我寫這一條,所有的工作!

while(i != userWhoIsInLineArray.GetNumberOfUsersOnline() - 1) { 
    Log.d("DATA-----|", "UserName- " 
     + userWhoIsInLineArray.GetUserName(i) 
     + " UserHref- " 
     + userWhoIsInLineArray.GetUserAccountHref(i)); 
    i++; 
} 

爲什麼會發生?

回答

0

我懷疑你的意思是在你的for循環測試中使用等式來保持連續性嗎?

該位:

i == userWhoIsInLineArray.GetNumberOfUsersOnline()-1 

也許你的意思是另一個比較操作?只有當子句的第二句話是真實的,換塊執行

for (i = 0; i < userWhoIsInLineArray.GetNumberOfUsersOnline(); i++) { 
    Log.d("DATA-----|", "UserName- " 
     + userWhoIsInLineArray.GetUserName(i) 
     + " UserHref- " 
     + userWhoIsInLineArray.GetUserAccountHref(i)); 
} 

0

你應該寫。所以,當變量i小於userWhoIsInLineArray.GetNumberOfUsersOnline()時,它必須是真實的。

cf 1. i == userWhoIsInLineArray.GetNumberOfUsersOnline()意味着只有當變量i等於userWhoIsInLineArray.GetNumberOfUsersOnline()這是事實。除非userWhoIsInLineArray.GetNumberOfUsersOnline()0,否則第一個循環的結果爲false。

CF 2.在同一SENCE您while循環是更好地爲改寫:

int i = 0; 
while (i < userWhoIsInLineArray.GetNumberOfUsersOnline()) { 
    Log.d("DATA-----|", "UserName- " 
     + userWhoIsInLineArray.GetUserName(i) 
     + " UserHref- " 
     + userWhoIsInLineArray.GetUserAccountHref(i)); 
    i++; 
}