두 개의 다른 텍스트 파일을 읽으려면 다음 코드를 작성했습니다. 한 텍스트 파일을 "사용자 이름"텍스트 파일이라고하며, 다른 하나는 "비밀번호"텍스트 파일이라고합니다. 나는 로그인 프로그램을 만들고있다. 사용자가 성공적으로 로그인하려면 사용자 이름의 줄 번호가 암호의 줄 번호와 일치해야합니다. 그러나 어떤 이유로 든 두 파일의 LineNumberReader가 제로에 머물러 있습니다.이 문제를 피하기 위해 어설 션을 넣기 때문에 이상합니다. 어설 션은 오류를 발생시키지 않았습니다. 나는 각 독자를 인쇄하기 때문에 그들이 0다는 것을 알고있다. 또한 의도적으로 잘못된 사용자 이름 - 암호 일치를 입력 한 경우에도 "일치하는 항목 찾기"에서 인쇄를 계속합니다. 아무도 이것을 알아낼 수 있습니까?LineNumberReader는 Java에서 항상 0을 반환합니까?
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;
}
아마도이 답변은 원하는 답변이 아니지만 ... "username : password"형식으로 한 줄을 사용한다면? f.readLine().을 사용하십시오. split (":")? – ggrandes
그래, 이전에 이것에 대해 생각해 봤는데, 정말로이 문제에 대한 해결책이 없다면 나는 그것을 할 것이다. 하지만 왜 이것이 작동하지 않는지 나는 이해하지 못합니다. 나는 Java에 익숙하지 않아서 내가 보지 못하는 것이 있을지 모르지만 코드가 작동해야하는 것처럼 보입니다. –
나는 당신이 br와 br2를 증가시키고 있지만 lnr이나 lnr2를 증가시키지 않는다는 것을 알았다. 가져올 행 번호를 어떻게 알 수 있습니까? 또한, 귀하의 회선 번호 독자가 0으로 고정되어 있다고 결정한 시점은 언제입니까? 출력이 보이지 않습니다. linereader는 파일의 내용을 읽을 수 있습니까? 난 당신이 더 나은 각각의 반복에서 각 반복에 대한 userline과 비밀 번호 라인을 증가 것이라고 생각하고 부울을 설정하면 사용자 이름이나 비밀 번호가 발견되었습니다. 모두한데 모아서 하나의 파일에 넣어야한다고 생각합니다. – mac10688