有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我正在尝试从文本文件进行简单登录。我使用了不同的方法将文本从文件读取到字符串行(BufferedReader和Scanner)。我可以将行转换成字符串,但当我使用if语句(.equals())或即使使用。equalsIgnoreCase()。当我打印要比较的两个字符串时,它们是相同的。但我的if语句似乎没有返回真值? 这是我最后一次尝试编码(我想如果我把它放入一个数组中,它可能会比较正确,但仍然没有结果)。 Iv'e查看并看到了与比较文本文件中的字符串类似的问题,但从未看到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) 个答案

  1. # 1 楼答案

    我试着执行你的代码,一切都如期进行。我收到了“匹配”。也许这是某种编码问题。尝试比较长度,如果可以,尝试在文件中只保留一行,然后尝试以下代码:

    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