【问题标题】:How to add an element in a null array in java?如何在java中的空数组中添加元素?
【发布时间】:2021-02-12 04:03:06
【问题描述】:

我创建了一个函数,它接受一个数组并输出另一个数组。因此,我已将结果数组(将是输出)声明为 null,因为大小会有所不同并取决于输入的数组。 (例如,如果我输入一个整数数组,然后我想输出包含该数组中偶数的数组)。所以我将使用 for 或 while 循环,我想知道如何将整数添加到该空数组。我试过了,但我得到一个空指针异常,说不能存储到 int 数组,因为“数组”为空。

对不起,但我不能使用更高级的技术,因为我是 java 新手(我需要在不使用 arraylist 库的情况下完成这个,因为我正在学习编码我发现了那些试图让你在特定主题中完美的问题然后他们会带您进入下一步,以便您做好准备)

我正在使用此代码,我想知道将一个元素添加到我的结果数组中还是应该将其初始化为 null 或其他原因导致大小取决于此代码中输入的数组我收到空指针异常

public static int[] even(int[] numbers) {
    int[] result = null;

    int even = 0;
    int i = 0;
    int a = 0;
    while (i < numbers.length) {
        if (numbers[i] % 2 == 0) {
            even = numbers[i];
            result[a] = even;
            a++;
        }
        i++;
    }
    return result;
}

【问题讨论】:

  • 抱歉,您不能“使用更高级的技术”,因为在这种情况下,更高级的技术才是正确的方法。例如,return Arrays.stream(numbers).filter(x -&gt; x % 2 == 0).toArray();

标签: java arrays algorithm


【解决方案1】:

数组的大小需要初始化。如果您想要动态存储,请阅读ListCollection

这里,如果你还想使用数组,你需要计数。

int a = 0;
while (i < numbers.length) {
    if (numbers[i] % 2 == 0) {
        a++;
    }
    i++;
}

然后在这之后,你可以将其初始化为int[] result = new int[a]

【讨论】:

    【解决方案2】:
    public static int[] even(int[] numbers) {
        int[] result = null;
    
        int j = 0;
        int a = 0;
        while (i < numbers.length) {
            if (numbers[j] % 2 == 0) {
                a++;
            }
            j++;
        }
        result = new int[a];
    
        int even = 0;
        int i = 0;
        int b = 0;
        while (i < numbers.length) {
            if (numbers[i] % 2 == 0) {
                even = numbers[i];
                result[b] = even;
                b++;
            }
            i++;
        }
        return result;
    }
    

    【讨论】:

      猜你喜欢
      • 2010-10-15
      • 1970-01-01
      • 2021-05-07
      • 2015-05-14
      • 2019-03-09
      • 2023-04-02
      • 2021-05-28
      相关资源
      最近更新 更多