2014-09-22 80 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