我认为我工作太晚而且失去了它但是Android中的字符串比较似乎不起作用,可能它已经晚了。
我有一个简单的JSON对象数组,当我的auto
值设置为“0”时,当String
设置为auto
时,我可以将该值与Exception
进行比较“1”比较直接进入equals
?
我尝试compareTo
和private 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}}
奇怪没有堆栈...什么都没有,IDE进入该代码但我看不到异常变量或堆栈
答案 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语句,在我的情况下是在异常处理程序中。
这就是为什么我没有看到实际的异常变量。你每天学习新的东西。谢谢你的帮助。