数组“越界”

我正在使用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!"); } } 

有人能告诉我为什么我得到exception“数组索引超出范围”? 谢谢

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

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

解决方案很简单

 String[] userInfo = new String[4]; 

您正在使用较小的arrays….执行此操作

 String[] userInfo = new String[4]; 

我建议你使用Arraylist因为这不需要任何大小来声明并且可以容纳任意数量的项目。

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

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