字符串值看起来相同但不相互“.equals()”

时间:2013-07-29 16:30:51

标签: android string file chars

我正在登录屏幕。它不起作用所以我决定将密码(保存到文件中)和输入的密码显示在屏幕上进行比较。

// 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比较:

enter image description here

我像这样比较chars

else 
{
    char[] filePass = filePassword.toCharArray();
    char[] pass = password.toCharArray();
}

这是char比较:

enter image description here

每次按下按钮,此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()));

1 个答案:

答案 0 :(得分:4)

在任何字符串中都可以有额外的字符吗?也许回车\r?您可以同时使用length()trim(),然后进行比较。或者尝试:

System.out.println(Arrays.toString(password.toCharArray()));  
System.out.println(Arrays.toString(filePassword.toCharArray()));