javafx和数组列表
问题描述:
我必须为大学写一个聊天应用程序作为一个项目,不幸的是,我迷失在某处(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!
答
以下行可能是您的问题:
userList.get(c) == username && passwordList.get(c) == password)
不要使用==
比较String
S,使用equals()
方法。
+0
太棒了,它的工作原理! :)我只是不得不将数据更改为字符串以及方法,与泛型它不会工作。谢谢盖尔 –
确切位置在哪里,你得到的错误是什么呢?请更新您的问题。 – hotzst