2016-01-21 73 views
-1

我必須爲大學寫一個聊天應用程序作爲一個項目,不幸的是,我迷失在某處(btw。我是java編程的noob,所以提前對不起):javafx和數組列表

我正在讀取一個文件(Data.txt),並將所有的字符串放在兩個數組列表中(我的User類的靜態塊)。然後,在同一個類(用戶類),我有一個方法(checkUser),它控制登錄的輸入(所以數組列表的內容),但不幸的是它總是給我一個錯誤(只是一個系統.out.put我創建,以檢查它是否有效),我沒有看到原因..我試圖找出自己幾個小時了,但它不會工作,這就是爲什麼IM問你在Java的專業人士...正如我前面提到的,我是一個noob在Java ..!這裏有我的課:

主要類

package chatapplication; 

public class Main extends Application { 

private TextField tf = new TextField(); 
private PasswordField pf = new PasswordField();; 
private Text textU = new Text("Username:"); 
private Text textP = new Text("Password:"); 
private Button login = new Button("Login"); 
private Button quit = new Button("Quit"); 
private Text register = new Text("Not registered yet?"); 
private Hyperlink hl = new Hyperlink("Chlick here!"); 

public static void main(String[] args) { 
    launch(args); 
} 

@Override 
public void start(Stage primaryStage) throws Exception { 
    User<String> user = new User<String>(); 
    Login log = new Login(); 
    log.addNode(textU, 0, 0); 
    log.addNode(textP, 0, 1); 
    log.addNode(tf, 1, 0); 
    log.addNode(pf, 1, 1); 
    log.addNode(login, 0, 2); 
    log.addNode(quit, 1, 2); 
    log.addNode(register, 0, 3); 
    log.addNode(hl, 1, 3); 
    user.printArrayList(); 

    login.setOnAction((ae) -> { 
     if ((user.checkUser(tf.getText(), pf.getText()) == 1)) { 
      System.out.println("Thanks " + tf.getText()); 
     } else 
      System.out.println("Wrong inputs, try again!"); 
    }); 

    hl.setOnAction((ae) -> { 
     Register reg = new Register(); 
     try { 
      reg.registerNow(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

    }); 

    quit.setOnAction((ae) -> { 
     user.copyFile(); 
     user.closeFile(); 
     System.exit(1); 
    }); 

} 

} 

User類

package chatapplication; 

public class User<T> { 

private static int u = 0; 
private static int p = 0; 
private static ArrayList<String> userList = new ArrayList<String>(); 
private static ArrayList<String> passwordList = new ArrayList<String>(); 
private static FileReader fr; 
private static Scanner scanner; 
private static Formatter fm; 
private static File file; 

static { 
    try { 
     fm = new Formatter("newData.txt"); 
     file = new File("newData.txt"); 
     fr = new FileReader("Data.txt"); 
     scanner = new Scanner(fr); 
     while (scanner.hasNextLine()) { 
      userList.add(u++, scanner.nextLine()); 
      passwordList.add(p++, scanner.nextLine()); 
     } 
     System.out.println("\n" + userList.get(0) + "\n" + passwordList.get(0) + "\n"); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 
} 

public int checkUser(T username, T password) { 
    for (int c = 0; c < userList.size(); c++) { 
     if (userList.get(c) == username && passwordList.get(c) == password) { 
      return 1; 
     } 
    } 
    return 0; 
} 

public void addUser(String user, String password) { 
    userList.add(u++, user); 
    passwordList.add(p++, password); 
} 

public void closeFile() { 
    fm.close(); 
} 

public void copyFile() { 
    for (int c = 0; c < userList.size(); c++) { 
     fm.format("%s\n", userList.get(c)); 
     fm.format("%s\n", passwordList.get(c)); 
    } 
    file.renameTo(new File("Data.txt")); 
} 

public void printArrayList() { 
    for (int c = 0; c < userList.size(); c++) { 
     System.out.println(userList.get(c)); 
     System.out.println(passwordList.get(c)); 
    } 
} 

預先感謝您的答案(S)! BR!

+0

確切位置在哪裏,你得到的錯誤是什麼呢?請更新您的問題。 – hotzst

回答

0

以下行可能是您的問題:

userList.get(c) == username && passwordList.get(c) == password) 

不要使用==比較String S,使用equals()方法。

參見:How do I compare strings in Java?

+0

太棒了,它的工作原理! :)我只是不得不將數據更改爲字符串以及方法,與泛型它不會工作。謝謝蓋爾 –