2014-03-27 77 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

相关问题