J'ai écrit le code suivant pour lire deux fichiers texte différents. Un fichier texte est appelé le fichier texte "nom d'utilisateur", tandis que l'autre est appelé le fichier texte "mot de passe". Je crée un programme de connexion. Pour que l'utilisateur puisse se connecter avec succès, le numéro de ligne du nom d'utilisateur doit correspondre à celui du mot de passe. Pour une raison quelconque cependant, mon LineNumberReader pour les deux fichiers est bloqué à zéro, ce qui est étrange parce que j'ai mis des assertions pour éviter cela et les assertions n'ont pas jeté une erreur. Je sais qu'ils sont nuls parce que j'ai imprimé chaque lecteur. Il continue également d'imprimer "Match trouvé" même lorsque je mets délibérément un mauvais nom d'utilisateur-mot de passe. Quelqu'un peut-il comprendre cela?Howcome LineNumberReader retourne toujours zéro dans Java?
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;
}
peut-être ce n'est pas la réponse que vous voulez ... mais ... si vous utilisez une ligne au format "nom d'utilisateur: mot de passe"? et utilisez f.readLine(). split (":")? – ggrandes
Oui j'ai pensé à cela plus tôt, et je le ferai s'il n'y a vraiment pas de solution à ce problème. Mais je ne comprends tout simplement pas pourquoi cela ne fonctionne pas. Je suis nouveau à Java alors peut-être qu'il y a quelque chose que je ne vois pas mais il semble que mon code devrait fonctionner. –
Je vois que vous incrémentez br et br2 mais vous n'incrémentez pas lnr ou lnr2. Comment est-il supposé savoir quel numéro de ligne chercher? Aussi, à quel moment avez-vous déterminé que vos lecteurs de numéro de ligne sont bloqués à 0? Je ne vois aucune sortie. Linereader est-il capable de lire le contenu du fichier? Je pense que vous feriez mieux d'incrémenter la ligne de l'utilisateur et le mot de passe pour chaque itération dans sa boucle respective et de définir un booléen si le nom d'utilisateur ou mot de passe a été trouvé. Tous ensemble, je pense que vous devriez les mettre dans un seul fichier. – mac10688