0

我有以下方法,它接受一个整数和字符串。此外,我必须将参数与从文本文件中读取的参数进行比较。我收到错误“不兼容的类型”。我必须做一些解析吗?如果是这样,怎么做?据我了解,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;
}
4

3 回答 3

3

line是 类型String并且staffid是 类型int。您无法在以下行中将inta 与 a进行比较:String

if (line == staffid)

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

使用String.valueOf方法将您的staffidint 值转换为 String并使用 equals 方法将其与 line 进行比较。

if (line.equals(String.valueOf(staffid))
于 2013-11-09T09:58:42.187 回答
1
if (line == staffid)

line是字符串staffIdint

于 2013-11-09T09:59:27.500 回答
0

对于 String 使用equals方法而不是==.

==仅比较参考。

于 2013-11-09T09:58:24.463 回答