2014-09-22 65 views
0

我使用字符串的数组[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!"); 
     } 
    } 

可有人告诉我为什么我得到异常“数组索引越界”? 谢谢

回答

1

当你声明一个数组时,你提供了该数组的长度/大小。 像您在代码中所做的那样,数组从索引0开始,但您试图将值 分配给索引“越界”(第四个索引)。

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

谢谢,我得到它的工作..它实际上是一个愚蠢的问题。抱歉。 – noBrainer 2014-09-22 21:17:21

1

解决方案很简单

String[] userInfo = new String[4]; 
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 
     {....... 
      ............ 

并据此处理连线代码的其余部分....

+0

谢谢Hitesh Garg, – noBrainer 2014-09-24 15:34:19

+0

欢迎使用@noBrainer。如果这真的帮助你,那么不要忘记加一个并接受答案,因为这将有助于这个职位的未来访问者。 – 2014-09-26 12:29:16