将输入的用户字符串与文本文件中的字符串进行比较

时间:2020-04-22 19:29:55

标签: java

我正在尝试从文本文件进行简单登录。我使用了不同的方式来将文件中的文本读取到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();
    }

}

1 个答案:

答案 0 :(得分:0)

我已经尝试执行您的代码,并且一切正常。我收到了“匹配”。也许是某种编码问题。尝试比较长度,如果可以,请尝试在文件中仅保留一行,然后尝试以下代码:

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