我使用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!");
}
}
有人可以告诉我为什么我得到异常"数组索引超出范围"? 谢谢
答案 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
{.......
............
其余的代码也相应地进行了......