Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android的字符串比较问题_Android_Json - Fatal编程技术网

Android的字符串比较问题

Android的字符串比较问题,android,json,Android,Json,我想我工作得太晚了,失去了它,但是Android中的字符串比较似乎不起作用,可能只是太晚了 我有一个简单的JSON对象数组,当我的auto值设置为0时,我可以将该值与字符串进行比较,当auto设置为1时,比较直接进入异常 我试着用相同的结果进行比较。在android上还有其他更合适的比较字符串的方法吗 多谢各位 private int findAutoPlayIndex(JSONArray items){ try{ int returnValue = -1;

我想我工作得太晚了,失去了它,但是Android中的字符串比较似乎不起作用,可能只是太晚了

我有一个简单的JSON对象数组,当我的auto值设置为0时,我可以将该值与字符串进行比较,当auto设置为1时,比较直接进入异常

我试着用相同的结果进行比较。在android上还有其他更合适的比较字符串的方法吗

多谢各位

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对象做一些事情,仍然保持外观