我使用Java String.equals()方法来比较两个字符串。 字符串是从File中获取的,首先使用String.split()方法通过Splitting Strings单独读取和存储每个单词。
但是,方法等于不产生"真"对于一些完全相同的字符串。
在这里,我实施了登录程序,该程序接受用户名和密码,并从file.dat检查用户是否存在以及是否存在,是否提供了正确的密码。
以下是Logic Snippet:
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;
}
指出我错在哪里。
以下是&#34; file.dat&#34;的文件内容:
ritwik/1234/ezio/5678
并且,这是终端输出: Terminal Output
答案 0 :(得分:1)
如果 u 是一个String而 attrib 是一个String数组,它将返回正确的布尔值。
检查两个字符串是否相同。通常的错误:
1。 String.equals区分大小写。所以“你好”和“你好”并不相等。
2。 String.equals不修剪(删除空格)。所以“你好”和“你好”不相等。
如果两者都失败,只需使用
System.out.println ("." + u + "==" + attrib[i] + ".");
在比较之前,您可以看到它们是否完全相同,也许在初始化时出现了问题。 (要点是为了更容易检测空间,但当然不需要它们。)
编辑:如果这也失败了,请尝试打印字符串的char数组(u.toCharArray()
),以防它中间有一些奇怪的字符。