我在java中遇到compareTo
方法的问题,这是代码:
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
,因为s
和bt
变量是相等的,我知道因为我完成了我的作业并对其进行了调试。只是想弄清楚我写这段代码的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,表示s
和btUp
相等。而且,the if-statement
永远不会被执行!
为什么会这样?对此有什么好的解决方案?
修改
我也试过这个:
boolean equals = s.equalsIgnoreCase(bt);
if(equals) {
return g;
}
boolean
是true
,但永远不会原谅if-statement
,我还应该提到这是在thread
内完成的,但这不会导致任何问题?
答案 0 :(得分:2)
在此代码段中
if(theSame == 0) {
putSharedPrefs("pathToBt", g);
}
如果您可以调试并检查theSame
是否为0
,那么请输入 sysout 并查看是否已打印。
因为你很确定如果没有被执行;看来你正在调试的代码和正在执行的代码是不一样的。当部署未部署并且您正在使用旧的可执行文件调试新源时,这有时会发生在eclipse中。
答案 1 :(得分:0)
为什么不这样做:
if (s.equalsIgnoreCase(bt) {
return g;
}
我想你可以使用compareTo,但它也会做其他事情......