【发布时间】:2013-07-29 13:16:27
【问题描述】:
我正在制作一个登录屏幕。它不起作用,所以我决定显示密码(保存到文件中),并将输入的密码显示到屏幕上进行比较。
// 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()));
【问题讨论】:
-
你能告诉我你到底想做什么吗?
-
您看到的字符不同,因为打印的字符串
[C@????是数组的地址,而不是内容。要打印数组的内容,请使用Arrays.toString(...)。 -
你能贴出实际进行比较的代码吗?