java - 改变Java中数组的大小

标签 java arrays 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。

最佳答案

问题是,您无法更改任何 (Object) 方法参数的引用,因此...

names = temp;

仅更改 addToArray 方法上下文中 names 变量的引用。您应该使用 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");
}

关于java - 改变Java中数组的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21871084/

相关文章:

c - 在C中将字符串存储在数组中

javascript - 按键数组过滤 javascript map 对象

javascript - 在 Javascript 中将函数插入数组

c++ - 错误 : Initial value of reference to non-const must be an lvalue

java - 我们可以用java操作ms access内置查询吗

java - 在 Java 中将 XML 文件转换为 JSON 文件的最快方法是什么?

c - 我如何将字符串添加到c中的字符串数组?

java - 从整数索引中获取字母

java - 当 AsyncTask 完成 Activity 时调用 fragment 方法

java - JTextArea 不动态更新