2014-03-27 78 views
-3

我匹配兩個java字符串,它匹配大部分相等的字符串,但對於某些值它不匹配,即使字符串是完全相同的。相同的字符串不匹配相同的值

public static Person SearchPersonByID(String id) 
    { 
    for(int i=0;i<personList.size();i++) 
    { 
    Person p=new Person(); 
    p=personList.get(i); 
    String useride=p.UserId.toString(); 
    System.out.println(p.UserId+"=="+id); 
    if(useride.contains(id)||useride.equals(id)) 
    { 
     System.out.println("Matched"); 
     return p; 
    } 

    }return null; 

} 

我已經調試了程序,雖然值完全相同,但它仍然返回null。 這裏是我想..Kindly值相匹配幫我

ahsan7==ahsan7 

它們是相同的,但它返回null


public class Person { 

String Status; 
String MobileNo; 
String Hobbies; 
String PersonName; 
String Password; 
String LastSeen; 
String UserId; 
String location; 
String Adress; 
String EmailId; 
String Type; 
String ImageAdress; 
int port; 
DefaultListModel<String> FriendsList=new DefaultListModel<>(); 

Person() 
{ 
} 

} 
+0

可能重複[我如何在Java中比較字符串?](http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – Brian

+2

@staticx注意:這是** not **關於使用'=='比較字符串。請仔細閱讀代碼。 – Jesper

+0

你可以發佈更多的課程嗎? –

回答

1

p.userid的長度是正確的,但參數String ID的長度始終爲990。 我改變了程序...我使用了Message.Split(,)分開了一個消息字符串;然後傳遞的字符串作爲參數傳遞給函數

public static Person SearchPersonByID(String id) 
{ 
for(int i=0;i<personList.size();i++) 
{ 
    Person p=new Person(); 
    p=personList.get(i); 
    id=id.trim(); 
    String useride=id.toString(); 
    System.out.println(p.UserId.length()+" compares "+id.length()); 
    if(p.UserId.equals(useride)) 
    { 
     System.out.println("Matched"); 
     return p; 
    } 

}return null; 

    } 

,它工作的罰款

+1

我想你應該弄清楚爲什麼'id'這麼大;對我來說,這表明你的調用代碼有問題。如果你確實想在這個函數中保留'trim()',我建議把它移到循環之外:只修整一次,而不是每次修改一次。無論如何,+1可以解決你自己的問題。 – kdgregory

+0

你是對的...... – Charlie

1

嘗試

userride.equalsIgnoreCase(id); for case insensitive comparisons 
userride.equals(id) for case sensitive comparison 

也許你可以做的就是在if()處加上一個調試點,並檢查你正在比較的字符串。

+3

情況是完全相同的.i甚至使用修剪 – Charlie

+0

PersonList是一個靜態對象? – rozar

相關問題