Java将字符串添加到字符串数组中

时间:2015-11-28 05:22:21

标签: java arrays string

您好我一直在尝试向String添加String[]。这就是我所拥有的,

static String[] ipList = {"127.0.0.1", "173.57.51.111", "69.696.69.69"};
@Override
public void actionPerformed(ActionEvent e) {
    String newIpGet = textfield.getText();
    try {
        for ( int  i = 0; i < Main.ipList.length; i++){
            Main.ipList[i+1] = newIpGet.toString(); // <---- *****
            Main.write(Main.ipList[i]);
        }
    } catch (IOException e1) {
        e1.printStackTrace();
    }

    Main.amountOfIps = Main.amountOfIps + 1;

    System.out.println("Text Entered!");
    System.out.println("There are now " +Main.ipList.length + " Ips.");
    textfield.setVisible(false);

    label.setVisible(true);;
}

但是,我一直在java.lang.ArrayIndexOutOfBoundsException,因为它不会让我做任何新的String。我无法修改ipList[]的声明而无需进行大量修改,我该怎么办?

3 个答案:

答案 0 :(得分:10)

Java数组具有固定长度(JLS-10.3. Array Creation部分地说,数组的长度可用作final实例变量length )。但您可以使用Arrays.copyOf(T[], int)复制数组并使其更长一些。举个例子,比如,

String[] ipList = { "127.0.0.1" };
System.out.println(Arrays.toString(ipList));
int len = ipList.length;
ipList = Arrays.copyOf(ipList, len + 1);
ipList[len] = "192.168.2.1";
System.out.println(Arrays.toString(ipList));        

输出

[127.0.0.1]
[127.0.0.1, 192.168.2.1]

答案 1 :(得分:7)

您认为这会发生什么:

for ( int  i = 0; i < Main.ipList.length; i++){
    Main.ipList[i+1] = newIpGet.toString();
    Main.write(Main.ipList[i]);
}

i == Main.ipList.length - 1时,您是否尝试访问等于Main.ipList[i + 1]的{​​{1}}?这可以保证抛出你所看到的异常。

你说:

  

“我无法真正改变我对ipList []的声明,否则会破坏我的整个项目。”

有时候,你有时候只需要采取措施并把所有东西搞得一团糟,这看起来就像其中之一。如果需要可扩展数组,请不要使用数组,而应使用Main.ipList[Main.ipList.length]

答案 2 :(得分:0)

您也可以使用ArrayList<String>套餐中的java.util!它们的长度可变,因此长度不像String[]那样是不可移动的。此外,当您添加或删除某些内容时,它们会“即时”执行此操作。