我现在已经解决了这个问题一个星期......我找不到这个问题。 我正在比较2个字符串。首先是来自用户输入,然后第二个来自随机访问文件读取。第一个字符串是转换为字符串的密码,第二个字符串是转换为写入随机访问文件的字符串的密码。 这是我的代码片段。
public boolean isRegistered(String pass, int id){
boolean here = false;
int i = 0;
pass = padding(pass);
String s;
try{
access = new RandomAccessFile(file, "r");
do{
access.seek(i*RECORD);
access.getFilePointer();
if(id == access.readInt()){
access.seek(i*RECORD+ID_SIZE);
access.getFilePointer();
s = String.valueOf(access.readUTF());
System.out.println("read s = "+s);
System.out.println("password is ="+pass);
System.out.println("read s.length = "+s.length());
System.out.println("pass.length = "+pass.length());
if(pass.equals(s){
here = true;
break;
}else{
System.out.println("Wrong password");
here = false;
break;
}
}
i++;
}while(access.getFilePointer()!= access.length());
access.close();
}catch(Exception e){
JOptionPane.showMessageDialog(null,"isRegistered "+e.getMessage());
}
return here;
}
我的文件包含完全相同的密码,因此它应该返回true。但不幸的是
updated
已经......我真的需要你的帮助。感谢您花时间阅读此内容:)
//我知道问题:) 字符串应该具有相同的大小和.equals应该强加。谢谢:)
此代码现在正在使用