0

我对compareTojava中的方法有疑问,这是代码:

for(int i = 0; i < btFolder.size(); i++) {

        String g = btFolder.get(i).toString();

        String[] subf = g.split(splitchar);

        String s = subf[subf.length-1].toUpperCase();

        if(s.compareTo(bt.toUpperCase()) == 0) {
            return g; 
        }
    }
    return null; //not found!

这不会跳入if-statement,它应该是因为sbt变量相等,我知道是因为我已经完成了作业并对其进行了调试。只是为了弄清楚compareTo我写了这段代码的方法返回什么:

        String g = btFolder.get(i).toString();

        String[] subf = g.split(splitchar);

        String s = subf[subf.length-1].toUpperCase();

        String btUp = bt.toUpperCase();

        int theSame = s.compareTo(btUp);

        if(theSame == 0) {
           putSharedPrefs("pathToBt", g); 
        }
        return null; 

变量theSame为0,表示sbtUp相等。而且,the if-statement永远不会被执行!

为什么会这样?有什么好的解决方案吗?

编辑

我也试过这个:

boolean equals = s.equalsIgnoreCase(bt);

        if(equals) {
            return g; 
        }

是,但从不执行,我boolean还应该提到这是在 a 内部完成的,但这不应该引起任何问题吗?trueif-statementthread

4

2 回答 2

2

在这个片段中

if(theSame == 0) {
       putSharedPrefs("pathToBt", g); 
}

如果您可以调试并检查,theSame那么0请放置一个sysout并查看其是否打印。

因为你很确定 if 没有被执行;您正在调试的代码和正在执行的代码似乎不一样。当构建未部署并且您正在使用旧可执行文件调试新源时,这有时会在 Eclipse 中发生。

于 2012-08-30T11:15:19.420 回答
0

为什么不这样做:

if (s.equalsIgnoreCase(bt) {
    return g; 
}

我想你可以使用 compareTo 但是它也可以做其他事情......

于 2012-08-30T11:07:16.337 回答