如果声明无法在Android应用中使用

时间:2017-08-24 19:45:08

标签: java android arraylist

我已经尝试过我所知道的所有问题来解决这个问题,但对我来说没什么好看的。下面是将返回线程名称的类中的代码。现在,如果线程的名称与提供给此方法的名称匹配,则它将返回该ArrayList的索引。问题是,bool是真的但是它似乎永远不会进入if语句。只是在它周围移动而是返回ERROR_NOTFOUND符号。这意味着程序忽略if​​语句的内容并转到第二个返回,完全绕过了第一次返回的机会。因此永远不会回到i;' ....

我已经调试了很多次但无济于事,几乎没有答案。随意运行任意代码并尝试自己。我完全剥离了这个项目,但仍然没有。然而,我应用下面的答案。

我的想法是它与使用的关键字有关。此外,在我寻找答案时,我还没有遇到任何有帮助的事情。所以,如果某个地方有答案,请告诉我,以便我能够提高我的搜索技能。

    private static int searchThread(ArrayList<Thread> threads, String name) {
    int i;
    for (i = 0; i < threads.size(); i++) {
        Thread thread = threads.get(i);
        String temp = thread.getName();
        Boolean bool = temp.equals(name);
        if (bool) {
            return i;
        }
    }
    return ERROR_NOTFOUND;
}

编辑:为了进一步详细说明,我调试了这段代码。我也尝试清理和重建,认为这是问题所在,但都没有帮助。所以这是我的逻辑问题或缺乏理解使用的关键字,使用的UI线程或我不知道的其他东西的真实影响..代码部分在UI线程上运行的任何方式从来都不是问题到现在? if&#34;不会忽略if语句;返回i&#34;替换为&#34;返回1&#34;。然后它会成功返回1.

2 个答案:

答案 0 :(得分:1)

您所描述的情景是不可能的。

return i

表示必须返回一些号码。

有两种可能的解释:

1)你没有检查“bool”状态,这是假的。

2)线程大小为零,因此程序不进入循环

答案 1 :(得分:1)

所以我似乎已经解决了我自己的问题,但我仍然感到困惑的是为什么第一次尝试无法返回&#39;我&#39;作为&#39;我&#39;能够在for循环和if语句中看到和编辑。

无论如何,下面是用于使其正常工作的代码。创建一个初始化为&#39; ERROR_NOTFOUND&#39;的补充int变量。一旦找到线程,就将其改为&#39; i&#39;的变量。刚刚找到了另一种看问题的方式。

再次,如果有人能指出为什么&#39;我&#39;在第一次尝试时无法归还,我很想知道,因为它看起来很奇怪..

编辑:不再那么困惑了。看起来它是一个编译器&amp;毕竟调试器问题。链接了解更多详情。 http://stackoverflow.com/questions/21805868

private static int searchThread(ArrayList<Thread> threads, String name) {
    int status = ERROR_NOTFOUND;
    for (int i = 0; i < threads.size(); i++) {
        Thread thread = threads.get(i);
        String temp = thread.getName();
        Boolean bool = temp.equals(name);
        if (bool) {
            status = i;
        }
    }
    return status;
}

我的if语句已缩短为

if (thread.getName().equals(name)) {