数组“越界”

时间:2014-09-22 21:05:36

标签: java arrays jtextfield filewriter bufferedwriter

我使用String [3]数组来存储从4个JTextField获得的用户输入 然后我将数组输出到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!");
        }
    }

有人可以告诉我为什么我得到异常"数组索引超出范围"? 谢谢

3 个答案:

答案 0 :(得分:1)

声明数组时,提供该数组的长度/大小。 正如您在代码中所做的那样,数组从索引0开始,但您尝试分配值 索引“越界” - 第四个索引。

new String[3] // index 0,1,2
new String[4] // index 0,1,2,3

答案 1 :(得分:1)

解决方案非常简单

String[] userInfo = new String[4];

答案 2 :(得分:0)

您正在使用较小的数组.... 这样做

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 
        {.......
           ............

其余的代码也相应地进行了......