Android问题与字符串比较

时间:2016-12-30 06:28:58

标签: android json

我认为我工作太晚而且失去了它但是Android中的字符串比较似乎不起作用,可能它已经晚了。

我有一个简单的JSON对象数组,当我的auto值设置为“0”时,当String设置为auto时,我可以将该值与Exception进行比较“1”比较直接进入equals

我尝试compareToprivate int findAutoPlayIndex(JSONArray items){ try{ int returnValue = -1; final int size = items.length(); for (int i = 0; i < size; i++) { JSONObject jObjectResult = items.getJSONObject(i); String auto = items.getJSONObject(i).getString("auto").trim(); //if ( auto.equals("1") ){ // return i; //} if ( auto.compareTo("1") == 0){ return i; } } return returnValue; } catch (Exception e) { e.printStackTrace(); return -1; } } 的结果相同。是否还有其他方法可以比较android上的字符串更合适?

谢谢

{{1}}

enter image description here

奇怪没有堆栈...什么都没有,IDE进入该代码但我看不到异常变量或堆栈

enter image description here

5 个答案:

答案 0 :(得分:4)

尝试这个

if(Integer.parseInt(auto) == 1)

答案 1 :(得分:3)

试试这个:

if ("1".equals(auto)) {
    return i;
}

如果auto没有值或者为null,这也将处理空指针异常。

答案 2 :(得分:1)

compareTo方法描述如下:

  

将此对象与指定的订单对象进行比较。返回一个   负整数,零或正整数,因为此对象较少   比,等于或大于指定的对象。

注意 null 不是任何类的实例,null.compareTo("1")即使Null Object Refference也应该null.equals("1") [如果你得到一个null为auto它会崩溃]

  

int java.lang.String.compareTo(java.lang.String)&#39;在空对象引用上

所以0 compareTo 1将返回-1,意味着obj小于1

但请确保您没有获得 null auto

要确保你的条件在你的条件中检查,如果它的android使用Logs

String auto = "1";
if(auto == null){
        System.out.println("MyOutPut-> is null");
    }
    else if ( auto.compareTo("1") == 0){
        System.out.println("MyOutPut->"+auto.compareTo("1"));
    }
    else {
        System.out.println("MyOutPut->" + auto.compareTo("1"));
    }

警告:同样是您要返回的异常(-1)。

但请记住,因为我说比较可以重新运行负int。所以-1是可能的。您可能认为这是一个错误,因为当出现异常时您返回-1但它可能是您从compareTo功能获得的真正价值。

答案 3 :(得分:0)

试试这个:

if (auto.toString().equals("1")){
    return i;
}

希望有所帮助

答案 4 :(得分:0)

好的,那太傻了。当在IDE中进入调试模式时,在我的if等于逻辑中我只有一个返回i的语句。

比较工作正常好IDE会自动跳到函数中的最后一个return语句,在我的情况下是在异常处理程序中。

这就是为什么我没有看到实际的异常变量。你每天学习新的东西。谢谢你的帮助。