2017-01-12 3 views
0

Ich möchte mich von einer Textdatei namens "ClientData.txt" anmelden, die die 2. (Benutzername) und dritte (Passwort) Zeile mit "/" Trennzeichen verwendet. aber wenn ich es betreibe, scheinen sie es nicht zu erkennen. bitte mein Code hier helfen:Java GUI Anmeldung aus einer Textdatei

File Login = new File ("ClientData.txt"); 
try{ 
    Scanner read = new Scanner (Login); 
    read.useDelimiter("/"); 
    while (read.nextLine() !=null) { 
     String user = read.next(); 
     read.next(); 
     if (jTextField1.getText().equals(user) && jPasswordField1.getText().equals(pass) && Clientbutton.isSelected()){ 
      new ClientMenu(); 
     } 
    } 
} catch (FileNotFoundException ex) { 
    JOptionPane.showMessageDialog(null, "Incorrect username or password"); 
} 

Antwort

1

Das Problem aufgrund der Tatsache, wahrscheinlich ist, dass neue Zeile Zeichen in Token mit benachbarten Strings enthalten sind.

z.B. Datei

John/Smith01 
Walter/Isaacson01 

Tokens: (1) John, (2) Smith01 \ n Walter, (3) Isacson01

Lösungen:

  1. Ändern Sie den Begrenzer scanner.useDelimiter("(/|\\r\\n|\\n\\r|\\r|\\n)"); neu aufzunehmen Zeilenzeichen.

  2. Verwenden Split stattdessen ein Trennzeichens der Einstellung:

    String line; 
    while (scanner.hasNextLine() && !isBlank(line = scanner.nextLine())) { 
    
        String[] accountData = line.split("/"); 
        String user = accountData[0]; 
        String password = accountData[1]; 
        System.out.println(user + ", " + password); 
    } 
    

    In dieser Fall BufferedReader Klasse und BufferedReader.readLine() bevorzugt.

    Wo isBlank ist:

    private static boolean isBlank(String s) { 
        return s == null || s.isEmpty(); 
    } 
    
+0

Dank! Ich benutze Split und es funktioniert – Rangga

Verwandte Themen