我正在登录屏幕。它不起作用所以我决定将密码(保存到文件中)和输入的密码显示在屏幕上进行比较。
// filePassword is the password inputted from the file as a String.
// password is the String value of the EditText on the screen.
if (password.equals(filePassword))
{
logIn();
}
我像这样比较Strings
:
else
{
scr.setText("." + filePassword + "." + '\n' + "." + password + ".");
}
这是String
比较:
我像这样比较chars
else
{
char[] filePass = filePassword.toCharArray();
char[] pass = password.toCharArray();
}
这是char
比较:
每次按下按钮,此char array
的输出都会发生变化。
显然char arrays
存在差异。我不知道为什么。这可能与我使用文件的方式有关吗?可能不是,考虑到我的项目中其他任何地方都没有发生过。
有没有办法解决这个比较?在两个值上使用.toString()
方法都不起作用。
____________________________________________________________________________________________________________________________________________
if (password.equals(filePassword))
需要:
if (password.equals(filePassword.trim()))
char array
比较总是不同的。比较它们的方法是:
import java.util.Arrays; // add to top of class
scr.setText(Arrays.toString(password.toCharArray()));
scr.append(Arrays.toString(filePassword.toCharArray()));
答案 0 :(得分:4)
在任何字符串中都可以有额外的字符吗?也许回车\r
?您可以同时使用length()
或trim()
,然后进行比较。或者尝试:
System.out.println(Arrays.toString(password.toCharArray()));
System.out.println(Arrays.toString(filePassword.toCharArray()));