Conjunto "fuera de límites" [duplicado]

Esta pregunta ya tiene una respuesta aquí:

Qué es un seguimiento de pila y cómo puedo usarlo para depurar los errores de mi aplicación? 7 respuestas ¿Cómo declaro e inicializo una matriz en Java? 21 respuestas

Estoy usando una matriz de String [3] para almacenar la entrada del usuario que se obtiene de 4 JTextFields. Luego, envío la matriz a un archivo txt:

String[] userInfo = new String[3];
    userInfo[0] = sourceTextField.getText();
    userInfo[1] = usernameTextField.getText();
    userInfo[2] = passwordTextField.getText();
    userInfo[3] = emailTextField.getText();
    for (String userInfo1 : userInfo) {
        try 
        {
            BufferedWriter writer = new BufferedWriter(new FileWriter("C:\\Users\\Peace Infinity\\Desktop\\[programming]Projects\\DataFiles\\PasswordRepository.txt", true));
            String s;
            s = userInfo1;
            writer.write(s + " ");
            writer.flush();
        }catch (IOException ex) 
        {
            Logger.getLogger(ADD_dialogBox_v1.class.getName()).log(Level.SEVERE, null, ex);
            JOptionPane.showMessageDialog(null, "Error processing file!");
        }
    }

¿Puede alguien decirme por qué obtengo un "índice de matriz fuera de límites" de excepción? Gracia

Respuestas a la pregunta(3)

Su respuesta a la pregunta