Nur erste Zeile aus Textdatei wird gelesen?
Steffi
- java
Hallo Leute,
ich versuche zurzeit ein einfaches Loginsystem in Java zu programmieren. Dabei werden die Logindaten in einer Textdatei gespeichert. Aus irgendeinem Grund wird allerdings nur die erste Zeile gelesen, alle weitere Zeilen werden ignoriert. Könnt ihr mir sagen warum?
Die Textdatei befindet sich in folgendem Format:
User Passwort Spiele_gespielt(Zahl) Gewonnen(Zahl)
Hier der Code:
public void actionPerformed(ActionEvent ae) {
// TODO Auto-generated method stub
String msg;
String file_name = "UserInfo.txt";
char[] pass = fdpassword.getPassword();
String p = new String(pass);
String user = fdusername.getText();
if (ae.getSource() == this.btnlogin) {
if (!checkEmpty(user, p)){
checkLogin(file_name, user, p);
}
else {
showMessage("Login failed.");
}
}
if (ae.getSource() == this.btnaccount) {
register();
}
}
public void checkLogin(String path, String user, String password) {
FileReader fr;
BufferedReader br;
boolean check = false;
String accountinfo = "";
try {
fr = new FileReader(path);
br = new BufferedReader(fr);
while ((accountinfo = br.readLine()) != null) {
System.out.println(accountinfo);
if (checkUser(accountinfo, user, password)) {
check = true;
showMessage("Hello");
game();
break;
}
if (!check) {
showMessage("Login failed");
}
br.close();
fr.close();
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
public boolean checkUser(String accountinfo, String username, String password) {
String[] info = accountinfo.split(" ");
String user = info[0];
String pass = info[1];
if (user.equals(username) && pass.equals(password)) {
return true;
} else {
return false;
}
}
Vielen Dank euch!
Liebe Grüße
Steffi
Hi,
Aus irgendeinem Grund wird allerdings nur die erste Zeile gelesen, alle weitere Zeilen werden ignoriert. Könnt ihr mir sagen warum?
Weil du – und das hätte dir bei *vernünftig* eingerücktem Code auch selber leicht auffallen können – den BufferReader bereits innerhalb der While-Schleife wieder schließt … D’oh!
MfG ChrisB
@@ChrisB:
nuqneH
Weil du – und das hätte dir bei *vernünftig* eingerücktem Code auch selber leicht auffallen können – den BufferReader bereits innerhalb der While-Schleife wieder schließt … D’oh!
Das kommt davon, wenn man Leerzeichen anstatt Tabs zum Einrücken verwendet.
Qapla'
[…] bei *vernünftig* eingerücktem Code […]
Das kommt davon, wenn man Leerzeichen anstatt Tabs zum Einrücken verwendet.
Das liegt doch eher an einer nicht konsequenten Einrückung, mal Tabs, mal Leerzeichen.
Wenn alles Leerzeichen sind (wobei ich von einer monospaced-Schriftart ausgehe und nicht von einer Proportionalen), kann das ja nicht die Ursache sein, dass so eine "Einrückung" entsteht.
MfG
bubble
PS: Ich mag Tabs auch lieber zum Einrücken als X Leerzeichen.
Tach!
Dabei werden die Logindaten in einer Textdatei gespeichert. Aus irgendeinem Grund wird allerdings nur die erste Zeile gelesen, alle weitere Zeilen werden ignoriert. Könnt ihr mir sagen warum?
Die Java-IDEs haben alle einen Debugger an Bord. Nutze diesen, um die Stelle zu finden, an der Wunsch und Wirklichkeit voneinander abweichen. Du kannst mit dem Debugger einen Breakpoint an der Stelle setzen, an der der interessante Teil beginnt. Dann lauf schrittweise durch und kontrollier die Inhalte der Variablen. Irgendwann dabei wirst du eine Abweichung feststellen. Wenn du dann noch ciht selbst dahinergekommen bist, was der Fehler ist, dann frag nochmal konkret nach.
dedlfix.