我正在尝试更改String数组的大小,但我不知道还有什么要尝试,这个方法不起作用。这是我的代码:
import java.util.Scanner;
public class test{
public static void main(String[] args){
String[] names;
names = new String[5];
for(int i=0; i<10; ++i){
addToArray(names, i, "blah");
}
System.out.println(names.length);
System.out.println("bye");
}
public static void addToArray(String[] names, int i, String name){
if (i < names.length){
names[i] = name;
}
else {
String[] temp;
temp = new String[names.length + 10];
System.arraycopy(names, 0, temp, 0, names.length);
addToArray(temp, i, name);
names = temp;
}
}
}
我的问题是,当我运行它时,会打印出我的数组的最终长度是5,应该是15。
答案 0 :(得分:6)
问题是,您无法更改任何(Object
)方法参数的引用,因此......
names = temp;
仅在names
方法的上下文中更改addToArray
变量的引用。您应该使用return
语句代替......
public static String[] addToArray(String[] names, int i, String name){
if (i < names.length){
names[i] = name;
}
else {
String[] temp;
temp = new String[names.length + 10];
System.arraycopy(names, 0, temp, 0, names.length);
names = addToArray(temp, i, name);
}
return names;
}
一旦方法返回,不要忘记维护引用...
for(int i=0; i<10; ++i){
names = addToArray(names, i, "blah");
}
答案 1 :(得分:2)
创建数组后,无法更改该数组的大小。一旦创建,数组就可以容纳固定数量的对象。
然而ArrayList
能够动态更改它所拥有的对象数量。初始化简单ArrayList
的方法是:
ArrayList<String> stringArrayList = new ArrayList<>();
答案 2 :(得分:1)
三分
length
的{{1}}。答案 3 :(得分:0)
将返回类型更改为 String [] 并返回 addToArray()方法中的名称并指定names = addToArray(String [] names,int i,字符串名称);在 mainMethod 中,因此您可以在尺寸增加时保持跟踪参考