我尝试创建一个程序,用户可以创建多个帐户并将数据保存在数组(user和pas)中,但我不断收到'ArrayIndexOutOfBoundsException'错误。这可能是我犯的一个愚蠢的错误,有人看到了吗?
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.control.PasswordField ;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class Main extends Application {
Button btnLogin,btnAanmaken;
TextField txtUsername;
PasswordField Password;
Label lblUsername,lblPassword;
int index;
String[] user = new String[10];
String[] pas = new String[10];
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Aanmelden");
btnLogin = new Button();
btnLogin.setText("Login");
btnAanmaken = new Button();
btnAanmaken.setText("Aanmaken");
txtUsername=new TextField();
txtUsername.setMaxWidth(200);
Password=new PasswordField();
Password.setMaxWidth(200);
lblUsername=new Label();
lblUsername.setText("Gebruikersnaam");
lblPassword=new Label();
lblPassword.setText("Paswoord");
btnLogin.setOnAction(e -> {
if (txtUsername.getText().equals("user") && Password.getText().equals("pass")){
AlertBox.display("Welkom", "U bent nu ingelogd");
}
else{
AlertBox.display("Fout ", "De opgegeven gebruikersnaam of het opgegeven wachtwoord is onjuist.");
}
});
btnAanmaken.setOnAction(e ->{
index++;
user[index]=txtUsername.getText();
pas[index]=txtUsername.getText();
System.out.println(pas[index]);
});
VBox layout = new VBox();
layout.getChildren().addAll(lblUsername,txtUsername,lblPassword,Password,btnAanmaken,btnLogin);
Scene scene = new Scene(layout, 300, 250);
primaryStage.setScene(scene);
primaryStage.show();
}
}
答案 0 :(得分:1)
使用后应该增加索引:
user[index]=txtUsername.getText();
pas[index]=txtUsername.getText();
index++;
在您的情况下,索引0永远不会在您的数组中设置 这就是我认为为什么你得到索引10的例外的原因。
嗯......如果已经达到大小或者您应该使用condition
,我认为您需要额外检查List
:
btnAanmaken.setOnAction(e ->{
if (index < 10){
index++;
user[index]=txtUsername.getText();
pas[index]=txtUsername.getText();
System.out.println(pas[index]);
}else{
System.out.println("the arrays reaches the max size!");
}
});