Android的字符串比较问题
我想我工作得太晚了,失去了它,但是Android中的字符串比较似乎不起作用,可能只是太晚了 我有一个简单的JSON对象数组,当我的auto值设置为0时,我可以将该值与字符串进行比较,当auto设置为1时,比较直接进入异常 我试着用相同的结果进行比较。在android上还有其他更合适的比较字符串的方法吗 多谢各位Android的字符串比较问题,android,json,Android,Json,我想我工作得太晚了,失去了它,但是Android中的字符串比较似乎不起作用,可能只是太晚了 我有一个简单的JSON对象数组,当我的auto值设置为0时,我可以将该值与字符串进行比较,当auto设置为1时,比较直接进入异常 我试着用相同的结果进行比较。在android上还有其他更合适的比较字符串的方法吗 多谢各位 private int findAutoPlayIndex(JSONArray items){ try{ int returnValue = -1;
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;
}
}
奇怪没有堆叠。。。什么都没有,IDE进入到代码中,但我看不到异常变量或堆栈
试试这个:
if (auto.toString().equals("1")){
return i;
}
希望对您有所帮助比较方法描述如下:
将此对象与订单的指定对象进行比较。返回一个
负整数、零或正整数,因为此对象小于
大于、等于或大于指定对象
请注意,null不是任何类的实例,null.compareTo1应该抛出null对象引用,即使null.equals1[如果自动获取null,它将崩溃]
null对象引用上的int java.lang.String.compareTojava.lang.String
因此,0 compareTo1将返回-1,表示obj小于1
但请确保没有为auto获取空值
为了确保你得到了什么,请检查你的条件,如示例中的android使用日志
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
但请记住,正如我所说,与之相比,可以重新运行负整数。所以-1是可能的。您可能会认为这是一个错误,因为在出现异常时返回-1,但它可能是从compareTo函数中获得的实际值。尝试以下操作:
if ("1".equals(auto)) {
return i;
}
当auto没有值或其值为null时,这也将处理null指针异常 试试这个
if(Integer.parseInt(auto) == 1)
好吧,那太傻了。当在IDE中进入调试模式时,在if equals逻辑中,我只有一条返回I的语句 比较工作正常IDE自动跳过下一步到函数中的最后一个返回语句,在我的例子中,该语句位于异常处理程序中
这就是为什么我没有看到实际的异常变量。你每天都能学到新东西。谢谢您的帮助。发布堆栈跟踪。同时显示异常。我尝试了所有解决方案,但运气不佳,一定是其他原因。我在IDE中看到一些奇怪的行为。单步执行时,我跳转到异常,但我没有堆叠一条消息,表明我的e exception变量在原始帖子中缺少过帐额外图像。@该异常块中的Radek打印/记录值EAN和JSONObject jObjectResult=items.GetJSONObject;String auto=items.getJSONObjecti.getStringauto.trim;在这里,您只需将第二行写为String auto=jObjectResult.getStringauto.trim;为什么要执行stringValue.toString?因为自动变量是字符串类型,所以使用.equals方法比较它还有其他比较方法,但我使用了这个,所以我发布了那个,这是我发布的一个工作代码。我投票与否无关紧要。这是关于学习不投票,如果你不想那没关系:是的,我同意,但我不否认没有其他方法可以完成这项任务。这只是我以前做过的,所以我分享了它。我只是说,如果它是正确的,那么只有我应该起来投票。这就是我所要说的,你的话是这样的:auto.toString.toString.toString.toString.toString;我用过这个,它也有用!当然有,但这有什么意义呢?这是一个非常好的主意,不幸的是对我来说不起作用:必须对JSON对象做一些事情,仍然保持外观