2 つの異なるテキスト ファイルを読み取るために、次のコードを作成しました。一方のテキスト ファイルは「ユーザー名」テキスト ファイルと呼ばれ、もう一方は「パスワード」テキスト ファイルと呼ばれます。ログインプログラムを作成しています。ユーザーが正常にログインするには、ユーザー名の行番号がパスワードの行番号と一致する必要があります。ただし、何らかの理由で、両方のファイルの LineNumberReader がゼロのままになっています。これを回避するためにアサーションを配置し、アサーションがエラーをスローしなかったため、これは奇妙です。各リーダーを印刷したので、それらがゼロであることはわかっています。また、意図的に間違ったユーザー名とパスワードの一致を入力した場合でも、「一致が見つかりました」と出力し続けます。誰でもこれを理解できますか?
public boolean usernamePasswordCheck(String username, String password) throws FileNotFoundException, IOException{
BufferedReader br = new BufferedReader(new FileReader("src/BioStat/username.txt"));
BufferedReader br2 = new BufferedReader(new FileReader("src/BioStat/password.txt"));
String line;
String line2;
int userLine=0;
int passwordLine=0;
LineNumberReader lnr = new LineNumberReader(new FileReader("src/BioStat/username.txt"));
LineNumberReader lnr2 = new LineNumberReader(new FileReader("src/BioStat/password.txt"));
while((line=br.readLine())!=null){
if(line.equals(username)){
//username is found in username list. There is a match!
//let's get it's line number
userLine = lnr.getLineNumber();
}else{
//username was not found in list, so we should keep reading.
line = br.readLine();
}
}
System.out.println("Userline: "+userLine);
br.close();
while((line2 = br2.readLine())!=null){
if(line2.equals(password)){
//username is found in username list. There is a match!
//let's get it's line number
passwordLine = lnr2.getLineNumber();
}else{
//username was not found in list, so we should keep reading.
line2 = br2.readLine();
}
}
System.out.println("passwordLine: "+passwordLine);
br2.close();
assert(userLine!=0);
assert(passwordLine!=0);
if(userLine==passwordLine){
System.out.println("Match Found");
matchfound = true;
}else{
System.out.println("Username and Password don't match");
}
return matchfound;
}