簡體   English   中英

Java字符串比較無法正常工作

[英]Java string comparison not working as intended



過去,我已經在Java中做了很多字符串比較,但是這次似乎不起作用。
我知道一個事實,您必須使用.equals()函數才能比較Java中的字符串。

為了找出問題所在,我編寫了以下代碼段:
Log.e("testLogic", String.valueOf(taken.getText().toString().trim().equals('1'))); Log.e("testValue", taken.getText().toString().trim());
產生以下結果:

E/testLogic﹕ false
E/testValue﹕ 1
E/testLogic﹕ false
E/testValue﹕ 1
E/testLogic﹕ false
E/testValue﹕ 0

這似乎很奇怪,因為前兩個“ testLogic”日志應該產生true。
該代碼用於自定義列表適配器(如果有任何含義)。

/米克爾

這是因為您沒有比較2個Strings 您必須這樣說:

Log.e("testLogic", String.valueOf(taken.getText().toString().trim().equals("1")));

因為.equals()函數需要兩個Strings 假設s1s2Strings ,則應該執行以下操作:

s1.equals(s2);

希望對您有幫助!

.equals()來自Object類。 每個類都從Object類繼承它。 String類也從Object類繼承它,並像這樣覆蓋它-

    public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String)anObject;
            int n = count;
            if (n == anotherString.count) {
            char v1[] = value;
            char v2[] = anotherString.value;
            int i = offset;
            int j = anotherString.offset;
            while (n-- != 0) {
                if (v1[i++] != v2[j++])
                return false;
            }
            return true;
            }
        }
        return false;
  }  

而且String沒有charequals方法的任何重載版本。 您可以看到String.equals()方法是否接受任何對象,但當它是任何類型而不是String時,它返回false 僅當提供的參數為String類型且有意義地等於時,它才返回true 所以你必須寫-

Log.e("testLogic",String.valueOf(taken.getText().toString().trim().equals("1"))); 

代替 -

Log.e("testLogic", String.valueOf(taken.getText().toString().trim().equals('1')));

暫無
暫無

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

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