为什么这个for循环不起作用?

时间:2015-10-25 12:52:35

标签: loops

请帮助。

此代码不起作用:

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

为什么会这样?

2 个答案:

答案 0 :(得分:0)

我怀疑你是否打算在for循环测试中使用相等的连续性?

这一位:

i == userWhoIsInLineArray.GetNumberOfUsersOnline()-1

也许你的意思是另一个比较运算符?

答案 1 :(得分:0)

你应该写为:

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

只有当for子句的第二句为真时,才执行for-block。因此,当变量i 小于 userWhoIsInLineArray.GetNumberOfUsersOnline()时,它必须为真。

cf 1. i == userWhoIsInLineArray.GetNumberOfUsersOnline()表示仅当变量i等于userWhoIsInLineArray.GetNumberOfUsersOnline()时才是真的。除非userWhoIsInLineArray.GetNumberOfUsersOnline()0,否则第一次循环会导致错误。

cf 2.同样,你的while循环最好重写为:

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