Массив за пределами [дубликата]

Я использую массив String[3] для хранения пользовательского ввода, полученного из 4 JTextFields. Затем я вывожу массив в текстовый файл:

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

Может ли кто-нибудь сказать мне, почему я получаю исключение «индекс массива выходит за пределы»? Спасибо


person noBrainer    schedule 22.09.2014    source источник


Ответы (3)


Когда вы объявляете массив, вы указываете длину/размер этого массива. Массив начинается с индекса 0, как вы сделали в своем коде, но вы пытаетесь присвоить значение индексу «за пределами» — четвертому индексу.

new String[3] // index 0,1,2
new String[4] // index 0,1,2,3
person msfoster    schedule 22.09.2014
comment
Спасибо, у меня все заработало.. на самом деле это был глупый вопрос. Прости. - person noBrainer; 23.09.2014

решение очень простое

String[] userInfo = new String[4];
person aarr    schedule 22.09.2014

Вы используете меньший массив.... сделайте это

String[] userInfo = new String[4];

Я бы посоветовал вам использовать Arraylist, так как это не требует объявления размера и может вместить любое количество элементов.

  ArrayList<String> userInfo = new ArrayList<>();
    userInfo.add(sourceTextField.getText());
    userInfo.add(usernameTextField.getText());
    userInfo.add(passwordTextField.getText());
    userInfo. dd(emailTextField.getText());
     for (String userInfo1 : userInfo) {
        try 
        {.......
           ............

И остальной код обрабатывается соответственно....

person Hitesh Garg    schedule 23.09.2014
comment
Добро пожаловать @noBrainer. Если это действительно поможет вам, не забудьте поставить плюс один и принять ответ, так как это поможет будущим посетителям этого поста. - person Hitesh Garg; 26.09.2014