ran*_*nny 6 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);;
}
Run Code Online (Sandbox Code Playgroud)
但是,我一直在努力,java.lang.ArrayIndexOutOfBoundsException因为它不会让我做任何新String的.如果ipList[]没有很多修改,我无法修改我的声明,我该怎么办?
Ell*_*sch 10
Java数组具有固定长度(JLS-10.3.阵列创建部分地说,数组的长度可用作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));
Run Code Online (Sandbox Code Playgroud)
输出是
[127.0.0.1]
[127.0.0.1, 192.168.2.1]
Run Code Online (Sandbox Code Playgroud)
你认为这会发生什么:
for ( int i = 0; i < Main.ipList.length; i++){
Main.ipList[i+1] = newIpGet.toString();
Main.write(Main.ipList[i]);
}
Run Code Online (Sandbox Code Playgroud)
什么时候i == Main.ipList.length - 1,你试图访问Main.ipList[i + 1]哪个等于Main.ipList[Main.ipList.length]?这可以保证抛出你所看到的异常.
你说:
"我真的无法改变我对ipList []的声明,否则会搞乱整个项目."
有时有时候你只需要冒险并把所有东西搞得一团糟,这看起来就像其中之一.如果需要可扩展阵列,请不要使用数组,而应使用数组ArrayList<String>.
| 归档时间: |
|
| 查看次数: |
130 次 |
| 最近记录: |