日期:2014-05-20  浏览次数:20674 次

请教一个java的“不是张三丰”“不容易搞掂”的错误原因。
我写了一个Java功能,代码如下:
    
	public boolean confirmteacher() {
System.out.println("进入S端判断教师方法"+ChatServer.bufMemUID[0]);
// int i = 0;
System.out.println("服务器存储的用户ID0的数据----:"+ChatServer.bufMemUID[0] + "1");
System.out.println("服务器存储的用户PWD0的用户数据----:"+ChatServer.bufMemPWD[0] + "2");
System.out.println("服务器接收到用户提交的ID数据----:"+MyUID + "3");
System.out.println("服务器接收到的用户提交的PWD数据----:"+MyPWD + "4");
for(int i = 0;i < ChatServer.bufMemUID.length;i++) {
System.out.println("ss"+(MyUID.equals(ChatServer.bufMemUID[i])));
System.out.println("ss"+(MyPWD.equals(ChatServer.bufMemPWD[i])));
System.out.println(MyUID);
System.out.println(ChatServer.bufMemUID[0]);
if ((MyUID.trim().equals(ChatServer.bufMemUID[i].trim()))&&(MyPWD.trim().equals(ChatServer.bufMemPWD[i].trim()))) {
System.out.println("UID"+i+"----->"+ChatServer.bufMemUID[i]);
System.out.println("UID"+i+"----->"+ChatServer.bufMemPWD[i]);
return true;
}
i++;
}
return false;
}

    但是,打印的结果如下:
    
    我写的这个方法,是我的程序中的一个部分,从远程传输到我的服务器中的用户UID与PWD,我是存储在我的上述代码的第6行的MyUID这个变量与第7行代码中的MyPWD这个变量中的,服务器中本地存储的用户账户与密码,我是放在了第4行与第5行的“ChatServer.bufMemUID[0]与ChatServer.bufMemPWD[0]”两个数组中的.
    现在,打印出来的数据显示:
    我的数据,用户账户,“在服务器中存储的数据”与“用户远程提交的数据”,“完全一样”.
    但是,出现了“返回equals()方法比较的结果为false”的返回值.
    希望高手能够点拨:
    这个问题,可能是什么原因造成的?
    我应该如何修改?
    
------解决方案--------------------
你的 bufMemUid 和 MyUID分别是什么类型?是不是equals函数被重写了
另外,再试一下equalsIgnoreCase
------解决方案--------------------
感觉是MyUID与ChatServer.bufMemUID[0]的类型不一致,
以及MyPWD与ChatServer.bufMemPWD[0]的类型不一致导致的

解决办法,先在eclipse中debug一下
在equals调用的地方设置断点,停住
查看MyUID与ChatServer.bufMemUID[0]的值
如果是类型不一致导致的问题的话,debug一下立即就能知道了