有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我想在字符串数组中添加一个字符串

我有一个类,在这个类中我有一个私有变量

private String[] stringArray = new String[100]

我在这个类中有一个这样的方法

public void addString (String addedString) {}

所以我想在字符串数组中添加一个字符串。 我不想使用列表,只想将它添加到一个具有预定数量的“空”元素的字符串数组中

我试过了

public void addString (String addedString) {
stringArray += addedString;
}

但我得到一个错误: 不兼容类型:无法将字符串转换为字符串[]


共 (4) 个答案

  1. # 1 楼答案

    实际上,你不能向数组中添加另一个元素,你知道,它是一个数组,大小是固定的。里面已经有100根弦了。如果确实需要使用数组而不是列表,则必须记住数组中最后一个包含有意义数据的元素,并替换下一个元素:

    private string[] stringArray = new String[100];
    private int meaningful = 0;
    public void addString (String addedString) {
        stringArray[meaningful+1] = addedString; // optionally check, whether the array really has enough space like meaningful < 100
        meaningful++;
    }
    
  2. # 2 楼答案

    不能“添加到”数组:它是一个固定长度的数据结构

    您可以再创建一个新数组,并设置最后一个元素:

    stringArray = Arrays.copyOf(stringArray, stringArray.length + 1);
    stringArray[stringArray.length - 1] = addedString;
    

    但老实说,最好改用List(特别是ArrayList),它可以为您增加数组的长度(如果您添加了大量元素,也可以更有效地增加数组的长度)

  3. # 3 楼答案

    public void addString (String addedString)
    {
        String[] old = stringArray;
        stringArray = new String[old.length + 1];
        for(int i = 0; i < old.length; i++)
            stringArray[i] = old[i];
        stringArray[stringArray.length] = addedString;
    }
    

    这基本上是最优化的方法。但是您应该使用ArrayList

  4. # 4 楼答案

    class Data {
        private final String[] arr = new String[100];
        private int pos = -1;
    
        public void add(String str) {
            if(pos < arr.length - 1)
                arr[++pos] = str;
        }
    
        public String remove() {
            return pos >= 0 ? arr[--pos] : null;
        }
    }