0

I have the following method, which takes in an integer & string. In addition, i have to compare the parameters with what is read from a text file. I get the error 'incompatible types'. Do I have to do some parsing? If so, how? From what i understand, parsing is not required with readLine(). The ideas is that I have to scan a text file for a valid staffId & go to the next line to check the associated password as well.

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はタイプStringstaffidあり、タイプintです。次の行で試しているためint、 a と aを比較することはできません。String

if (line == staffid)

比較を行うには、それらを同じデータ型に変換する必要があります。

String.valueOfstaffidメソッドを使用して int 値を String に変換し、 equals メソッドを使用して line と比較します。

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

lineは文字列staffIdですint

于 2013-11-09T09:59:27.500 に答える
0

Stringの場合equals、 の代わりに method を使用し==ます。

==参照のみを比較します。

于 2013-11-09T09:58:24.463 に答える