Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.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
Java 字符串比较问题_Java_Android_String_Compare - Fatal编程技术网

Java 字符串比较问题

Java 字符串比较问题,java,android,string,compare,Java,Android,String,Compare,我正在尝试做一些非常简单的事情,但在android中显然是非常困难的。 我只想比较两个字符串,看看它们是否相等 我有一个值为“Location”的临时变量 我已经调试了这个,它确实包含位置。。。 所以我一开始就试过了 if(temp == "Location") { //do something } 但我已经知道这是行不通的。然后,我尝试了字符串的所有可能函数,例如: .等于 .包含 .IgnoreCasequals 等等 如果有人知道该做什么,请帮忙。这真让人讨厌 编辑: 这是一个函数,我在

我正在尝试做一些非常简单的事情,但在android中显然是非常困难的。 我只想比较两个字符串,看看它们是否相等

我有一个值为“Location”的临时变量 我已经调试了这个,它确实包含位置。。。 所以我一开始就试过了

if(temp == "Location") { //do something }
但我已经知道这是行不通的。然后,我尝试了字符串的所有可能函数,例如:

.等于 .包含 .IgnoreCasequals 等等

如果有人知道该做什么,请帮忙。这真让人讨厌

编辑: 这是一个函数,我在其中比较字符串,以供大家查看

public String[] getData(){ 
    try {
        int tempGroupCount = 0;
        URL food_url = new URL (Constants.SERVER_DINING);
        BufferedReader my_buffer = new BufferedReader(new InputStreamReader(food_url.openStream()));
        temp = my_buffer.readLine();
        // prime read
        while (temp != null ){
            // check to see if readline equals Location
            Log.w("HERasdfsafdsafdsafE", temp);
            // start a new location
            if (temp.equals("Location")
            {
                groups[tempGroupCount] = temp;
                tempGroupCount++;
            }
                Log.w("HERasdfsafdsafdsafE", temp);
                //start for-loop to test to get child info
                //for(temp = my_buffer.readLine(); temp != "Location" && temp != null; groupCount++, childrenCount++){
                    //children[groupCount][childrenCount] = temp;
                //}

            temp = my_buffer.readLine();
        }
        my_buffer.close();
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        Log.e("IO EXCEPTION", "Exception occured in MyExpandableListAdapter:" + e.toString());
    }
    return groups;
    }
试着

if(temp.equals("Location")) { //do something }

while (!temp.equals("")){
试着

if(temp.equals("Location")) { //do something }

while (!temp.equals("")){

如果变量temp是一个
字符串
,也可以使用
compareTo(String)
方法


如果变量temp是一个
字符串
,也可以使用
compareTo(String)
方法

equals
确实有效。如果
temp.equals(“Location”)
返回false,则
temp
变量不引用值为“Location”的字符串

字符串可能有无法打印的字符或其他奇怪的地方-我建议您查看字符串的长度以进行检查。或者,也可以有其他字符看起来像ASCII字符,但不是。在调试器中,尝试检查数组并获取底层字符数组-检查每个字符的Unicode值。

equals
确实有效。如果
temp.equals(“Location”)
返回false,则
temp
变量不引用值为“Location”的字符串

字符串可能有无法打印的字符或其他奇怪的地方-我建议您查看字符串的长度以进行检查。或者,也可以有其他字符看起来像ASCII字符,但不是。在调试器中,尝试检查数组并获取底层字符数组-检查每个字符的Unicode值。

尝试执行以下操作:

if (temp.toLowerCase().compareTo("location") == 0)
尝试这样做:

if (temp.toLowerCase().compareTo("location") == 0)

我也在做同样的场景,效果很好

    String result = responsePrimitiveData.toString();
if(!result.equals("0")){ 
     }

我也在做同样的场景,效果很好

    String result = responsePrimitiveData.toString();
if(!result.equals("0")){ 
     }
首先尝试将“temp”转换为字符串,然后比较它,应用它可能会对您有所帮助


首先尝试将“temp”转换为字符串,然后进行比较,这可能有助于您找到问题所在

final String LOCATION = "Location"; // just to make sure we use the very same character sequence

if (temp.equals(LOCATION)
{
    /* your code here */
}
else
{
    System.out.println("Location : " + Arrays.toString(LOCATION.getBytes(Charset.forName("UTF-8"))));
    System.out.println("temp     : " + Arrays.toString(temp.getBytes(Charset.forName("UTF-8"))));
}
这会将两个字符串的字节表示形式打印到标准输出。如果equals()返回false,则字符串不同。由于无法打印的字符或外观相似的字符,有时很难找到差异。但是字节表示应该向您显示


(我不是安卓程序员,所以我希望这些函数存在于安卓JVM上。对于任何输入错误和缺少括号(如果有的话)表示抱歉;)

您可以尝试以下方法来找出问题所在

final String LOCATION = "Location"; // just to make sure we use the very same character sequence

if (temp.equals(LOCATION)
{
    /* your code here */
}
else
{
    System.out.println("Location : " + Arrays.toString(LOCATION.getBytes(Charset.forName("UTF-8"))));
    System.out.println("temp     : " + Arrays.toString(temp.getBytes(Charset.forName("UTF-8"))));
}
这会将两个字符串的字节表示形式打印到标准输出。如果equals()返回false,则字符串不同。由于无法打印的字符或外观相似的字符,有时很难找到差异。但是字节表示应该向您显示


(我不是安卓程序员,所以我希望这些函数存在于安卓JVM上。对于任何输入错误和缺少的括号(如果有;-)

那么
equals
不起作用怎么办?也许这会有帮助(也许):那么
equals
不起作用怎么办?也许这会有帮助(也许):嗯,我提取的数据在服务器上,我无权在服务器atm上编辑该文件,因此我无法检查文本文件是否有问题,如在空白处,可能会将其丢弃。。当你说在调试器中,我可以把每个字符串数组看作字符。。。如何?Android有一个很好的调试器。如果您不想使用它,您可以简单地遍历每个字符(通过
length()
)并通过
charAt
将Unicode值打印出来,通过
Log.d()
@cj1098将其输出到调试输出:您说您已经调试到了代码中-因此您大概知道如何使用调试器。当你检查一个字符串时,你应该能够得到一个更“原始”的视图,这将包括对底层字符数组的访问。我从中提取的数据位于服务器上,我无权在服务器atm上编辑该文件,因此我无法检查文本文件是否有问题,如在空白处,可能会导致其丢失。。当你说在调试器中,我可以把每个字符串数组看作字符。。。如何?Android有一个很好的调试器。如果您不想使用它,您可以简单地遍历每个字符(通过
length()
)并通过
charAt
将Unicode值打印出来,通过
Log.d()
@cj1098将其输出到调试输出:您说您已经调试到了代码中-因此您大概知道如何使用调试器。当您检查字符串时,您应该能够获得一个更为“原始”的视图,其中包括对底层char数组的访问。temp不是一个集合,它是一个字符串变量。temp不是一个集合,它是一个字符串变量。