2

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

// 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()));
4

1 回答 1

4

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

System.out.println(Arrays.toString(password.toCharArray()));  
System.out.println(Arrays.toString(filePassword.toCharArray()));
于 2013-07-29T16:35:16.193 回答