我正在尝试从文本文件进行简单登录。我使用了不同的方式来将文件中的文本读取到String行(BufferedReader和Scanner)。我能够将行变成字符串,但是当我使用if语句(.equals())或什至使用.equalsIgnoreCase()时,它都不想比较两个字符串并匹配。当我打印两个要比较的字符串时,它们是相同的。但是我的if语句似乎没有返回true?
这是我尝试的最后一个编码(我想也许将其放入数组中可以比较正确,但仍然没有效果)。
我看了看类似的问题来比较文本文件中的字符串,但从未见过if语句返回true的问题
import java.io.*;
import java.text.*;
import java.lang.*;
public class tes
{
public static void main(String[] args)throws Exception
{
String logline = "JMX^1234";
ArrayList<String> lines = new ArrayList<String>();
FileReader fr = new FileReader("/home/jmx/Desktop/javap/Bank/jm.txt");
BufferedReader br = new BufferedReader(fr);
String rline = br.readLine();
while(rline != null)
{
lines.add(rline);
rline = br.readLine();
}
String[] users = new String[lines.size()];
lines.toArray(users);
for(int i = 0; i < users.length; i++)
{
if(logline.equals(users[i]))
{
System.out.println("Matched");
}
}
System.out.println("Login line: " + logline);
System.out.println("Text Line: " + users[0]);
br.close();
fr.close();
}
}
最佳答案
我已经尝试执行您的代码,并且一切正常。我收到了“匹配”。也许是某种编码问题。尝试比较长度,如果可以,请尝试在文件中仅保留一行并尝试以下代码:
String logline = "JMX^1234";
ArrayList<String> lines = new ArrayList<String>();
FileReader fr = new FileReader("/home/jmx/Desktop/javap/Bank/jm.txt");
BufferedReader br = new BufferedReader(fr);
String rline = br.readLine();
while(rline != null)
{
lines.add(rline);
rline = br.readLine();
}
String[] users = new String[lines.size()];
lines.toArray(users);
for (char ch : users[0].toCharArray()) {
System.out.print((int)ch);
}
System.out.println();
for (char ch : logline.toCharArray()) {
System.out.print((int)ch);
}
System.out.println();
for(int i = 0; i < users.length; i++)
{
if(logline.equals(users[i]))
{
System.out.println("Matched");
}
}
System.out.println("Login line: " + logline);
System.out.println("Text Line: " + users[0]);
br.close();
fr.close();
它应该返回相等的数字行,如下所示:
7477889449505152
7477889449505152
Matched
Login line: JMX^1234
Text Line: JMX^1234
另外,请尝试检查以下答案:https://stackoverflow.com/a/4210732/6226118