java - 比较 Java Strings.equals() 方法产生不正确的 boolean 表达式

标签 java string equals

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

但是,对于某些完全相同的字符串,方法 equals 不会产生“true”。

在这里,我正在实现登录程序,它接受用户名和密码,并从 file.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

并且,这是终端输出: Terminal Output

最佳答案

如果u是一个字符串并且attrib是一个字符串数组,它将返回正确的 boolean 值。

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

1. String.equals 区分大小写。所以“Hello”和“hello”不相等。

2. String.equals 不会修剪(删除空格)。所以“Hello”和“Hello”不相等。

如果这两种方法都失败,只需使用

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

先比较一下,看看是不是一模一样,可能是初始化的时候出了问题。 (这些点是为了更容易检测空格,但当然它们不是必需的)。

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

关于java - 比较 Java Strings.equals() 方法产生不正确的 boolean 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36496716/

相关文章:

java - @NumberFormat接受逗号和点,如何在InitBinder中实现这一点

java - 我被 Java 作业“解析字符串”困住了

java - 如何在java中找到用户接受的字符串数组的索引?

java - 在继承层次结构中实现健壮的 equals() 和 hashCode() 方法的正确方法是什么?

java - 比较 Java 中的字符串 .equals()

java - super.onCreate(savedInstanceState) 错误

java - write behind cache Ehcache新特性?

javascript - typescript 对象 : How do I restrict the keys to specific strings?

java - compareTo 如何工作?

java - 如何在jetty中禁用slf4j