比较Java Strings.equals()方法会产生不正确的布尔表达式



我使用Java String.equals()方法来比较两个字符串。字符串是从一个文件中提取的,该文件首先通过使用String.split()方法拆分字符串来读取并单独存储每个单词。

但是,equals方法并没有为某些完全相同的String生成"true"。

在这里,我正在实现登录程序,它接受用户名和密码,并从文件.dat中检查用户是否存在,如果存在,他是否提供了正确的密码。

以下是逻辑代码段:

for( int j = 0; j < attrib.length-1; j += 2 )
{
 if( j == 0 )
  attrib[j] = attrib[j].replace("null","");
 if( u.equals( attrib[j] ) )
 {
  if( p.equals( attrib[j+1] ) )
  {
   System.out.println("Sucess");
   chk++;
   break;
  }
 }
 if( chk == 1 )
  break;
}

指出我错在哪里。

以下是来自"File.dat"的文件内容:

ritwik/1234/ezio/5678

这里是终端输出:终端输出

如果u是String,而attrib为String数组,则它将返回正确的布尔值。

检查两个字符串是否相同。常见错误:

1。String.equals区分大小写。所以"你好"one_answers"你好"是不相等的。

2。String.equals不修剪(删除空格)。所以"你好"one_answers"你好"是不相等的。

如果两者都失败了,只需使用

System.out.println ("." + u + "==" + attrib[i] + ".");

在进行比较之前,您可以看到它们是否完全相同,也许在初始化时出现了问题。(这些点是为了更容易检测空间,但当然不需要它们)。

编辑:如果此操作也失败,请尝试打印字符串(u.toCharArray())的字符数组,以防它在在中间有一些奇怪的字符。

最新更新