簡體   English   中英

相等的子字符串值不返回預期結果

[英]Equal substring value does not return expected result

嗨,我對此子字符串有疑問,我希望它相等。 好吧,我做了一個函數,您將比較兩個名稱,然后每當這些名稱共享同一字符時,它將所有這些字符都更改為空格。 您能檢查一下我的錯誤在哪里嗎? 我很難弄清楚。 這是我的代碼:

name1 = name1.replace(" ","");
    name2 = name2.replace(" ","");

    Log.v(TAG, name1);
    Log.v(TAG, name2);

    Log.v(TAG, String.valueOf(name1.length()));
    Log.v(TAG, String.valueOf(name2.length()));

    for (int x=0; x < name1.length(); x++){
        for (int y=0; y < name2.length(); y++){

            Log.v(TAG, "Value of LOOP : "+"-"+String.valueOf(y) +"-"+String.valueOf(x)+"-");
            Log.v(TAG,"-"+name1.substring(x)+"-"+name2.substring(y)+"-");

            if (name1.substring(x) == name2.substring(y)){
                Log.v(TAG, "Value of XY : "+String.valueOf(y)+","+String.valueOf(y));

                name1 = name1.replace(name1.substring(x)," ");
                name2 = name2.replace(name2.substring(y)," ");
            }
        }
     }
    Log.v(TAG,"LOOP SUCCESS");

    String name3 = name1 + name2;
    Log.v(TAG,"Name 3 Value: "+name3);

不要使用==比較兩個String變量。 使用equals()方法。

if (name1.substring(x).equals(name2.substring(y))) {
    ...

不要將Java字符串與==進行比較,而應使用equals()。 基本上,您有兩個具有相同值的對象。 運算符==測試兩個引用是否指向同一對象。

Java中的字符串/對象比較是.equals()而不是==

if (name1.substring(x).equals(name2.substring(y)))

正如其他人指出的那樣,每當您要比較兩個String對象的實際數據時,都應使用.equals()使用==僅在兩邊都是相同的對象時進行比較(換句話說,如果它們在相同的內存位置) 。

這是一些可以幫助您理解的代碼

String s = "Hello";
String d = "Hello";

System.out.println(s.equals(d)); // Prints out true
System.out.println(s == d); // Prints out false

String newS = s;

System.out.println(s.equals(newS); // Prints out true, the data is still the same
System.out.println(s == newS); // Prints out true because they are the same object

.equalsIgnoreCase()工作方式相同,但"Hello""hello"將被視為相等的字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM