java - javaFX 中的 ArrayIndexOutOfBoundsException

标签 java javafx

我尝试创建一个程序,用户可以在其中创建多个帐户并将数据保存在数组(用户和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();
    }

}

最佳答案

使用后应该增加索引:

            user[index]=txtUsername.getText();
            pas[index]=txtUsername.getText();
            index++;

在你的情况下,索引 0 永远不会在你的数组中设置,并且 我认为这就是索引 10 异常(exception)的原因。

好吧...我认为您需要额外检查条件是否已达到大小,或者您应该使用列表:

    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!");
       } 
       });

关于java - javaFX 中的 ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33715040/

相关文章:

JavaFX:与 NumberConverter 双向绑定(bind)

Java, (low + high) >>> 1 会溢出吗?

java - Swing worker 延迟

Java - Eclipse 中未定义的方法

listview - 什么是 "virtualized controls"? (在 JavaFX 文档中提到)。

java - 从另一个 Controller 类设置 boderpane 中心

JavaFX 如何在 GridPane 中的 HBox 中垂直对齐复选框

java - 无法将 getDownloadUrl() 的响应保存到变量

java - 使用 HibernateTemplate 的问题 : java. lang.NoSuchMethodError : org. hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session;

android - 如何提取无效的 .apk 文件的代码?