说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

为什么equals()不等????

编辑:说三道四文库 发布时间:2018-07-16 03:40
HTML文档下载 WORD文档下载 PDF文档下载
public boolean CheckUser(String name,String pwd)
{ try
{
FileInputStream fstream=new FileInputStream("data.ini");
DataInputStream in=new DataInputStream(fstream);

String txt;
while(in.available()!=0)
{
txt=in.readLine();
if(txt.indexOf("UserName")!=0)
{
this.pwd=txt.substring(9);
//pwd is equals indexof("username")
}
if(txt.indexOf("PassWord")!=0)
{
this.name=txt.substring(9);
//name is equals indexof("password")
}
}
in.close();
}
catch(Exception e)
{
e.printStackTrace();
}
String t1=this.pwd;
String t2=this.name;


if(t1.equals(name) && t2.equals(pwd))
{
return true;
}
else
{
return false;
}
}
}

其中data.ini的文件中的内容为:
UserName:user
PassWord:pwd
使用CheckUser("user","pwd")为什么结果为false????
equals()为什么不等?
在你这个方法里面的name 和pwd值都是空的,怎么可能相等???

方法的参数和类变量最好不要重名,,特别是新手,
你这样改测试下:
this.pwd  改为 pwd
this.name 改为 name

想不通,你的类为什么还要定义pwd和name两个变量??


if(txt.indexOf("UserName")!=0) 改为 if(txt.indexOf("UserName")>-1)
if(txt.indexOf("PassWord")!=0) 改为 if(txt.indexOf("PassWord")>-1)
试一试。
换行符算不算一个字符
CheckUser(String name,String pwd)中的name和pwd是你传进来要用来比较的变量
而你后面的this.pwd和this.name你应该是想要用来存放你从文件里读入的UserName:user
PassWord:pwd这两个值的变量
那么请把this.pwd=txt.substring(9);和this.name=txt.substring(9);这个两个地方改成String t1=txt.substring(9);Stirng t2=txt.substring(9);把后面的t1,t2赋值的地方删掉,
另外if(t1.equals(name) && t2.equals(pwd))中把t1和t2换个个if(t2.equals(name) && t1.equals(pwd)),这样应该就可以了.
另外用system.out.println把你传进来的值和读入的值打出来看看是什么,这样更好明白问题处在哪里
String t1=this.pwd;
String t2=this.name;


if(t1.equals(name) && t2.equals(pwd))

??颠倒了吧?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘