如何比较从文本文件读取的行与传入的整数

时间:2013-11-09 09:54:21

标签: java

我有以下方法,它采用整数&串。另外,我必须将参数与从文本文件中读取的内容进行比较。我收到错误'不兼容的类型'。我必须做一些解析吗?如果是这样,怎么样?据我所知,readLine()不需要解析。我的想法是,我必须扫描文本文件以获得有效的staffId&转到下一行也检查相关密码。

public boolean staffExists (int staffid, String staffpwd) throws IOException
{
    boolean valid = false;      

    String filePath = new File("").getAbsolutePath();

    BufferedReader reader = new BufferedReader(new FileReader(filePath + "/src/DBTextFiles/Administrator.txt"));

    try
    {                           
        String line = null;         
        while ((line = reader.readLine()) != null)
        {
            if (!(line.startsWith("*")))
            {
                //System.out.println(line);

                //http://stackoverflow.com/questions/19874621/how-to-compare-lines-read-from-a-text-file-with-integers-passed-in
                if (line.equals(String.valueOf(staffid)) && (reader.readLine() == staffpwd))
                {
                    System.out.println ("Yes");
                    System.out.println ("Welcome " + reader.readLine() + "!");
                    valid = true;
                }                   
            }
        }               
    }
    catch (IOException ex)
    {
        ex.printStackTrace();
    }                           
    finally
    {
        reader.close();
    }           
    return valid;
}

3 个答案:

答案 0 :(得分:3)

line的类型为Stringstaffid的类型为int。在以下行中,您无法将intString进行比较:

if (line == staffid)

您需要将它们转换为相同的数据类型才能进行比较。

使用String.valueOf方法将staffid int值转换为String,并使用equals方法将其与line进行比较。

if (line.equals(String.valueOf(staffid))

答案 1 :(得分:1)

if (line == staffid)

line字符串staffIdint

答案 2 :(得分:0)

对于字符串使用equals方法而不是==

==仅比较参考文献。