初始化时是否可以覆盖长度为0的数组?

问题描述 投票:0回答:2

我试图想办法在这种情况下覆盖特定的数组。我迭代通过LinkedList,当我遇到Element null时,我应该将Element的索引添加到已定义的int数组中。

public int [] indexes()       
{
    int [] result = new int [0];
    int counter  = 0;
    Element current = first;
    int k = 0;

    for(int i = 0 ; i< size() ; i++)
    {
        if(current.getContent()==null)
        {
            counter++;     
        }
    }

    int [] temp = new int [counter];

    current = first;

    for(int i = 0 ; i< size() ; i++)
    {
        if(current.getContent()==null)
        {
            temp[k++] = i ;

        }
    }

    result = temp;
    return result;

正如您已经看到的,我有一个没有元素的数组,长度为0。

然后我迭代列表以检查是否以及有多少元素为空。当我找到一个我增加计数器。

我设置了一个新的临时数组,其中包含计数器的长度,并使用索引填充临时元素。

第一个问题:行结果= temp;按计划工作?调用结果的数组现在是否包含temp数组?

第二个问题:如何在没有获得NullpointerException的情况下检查LinkedList中的Element是否为null?我尝试在if条件中使用以下内容:

  1. current == null
  2. current.getContent()== null
  3. current.equals(空)
  4. current.getContent()。等于(空)

所有这些都返回了一个0的计数器,这意味着它在遇到Null-Element时没有增加计数器。如何重写if条件?

java arrays nullpointerexception null override
2个回答
0
投票

问题1:是的。 result和temp引用相同的数据。

问题2:你的for循环有问题:

for(int i = 0 ; i< size() ; i++)
{
    if(current.getContent()==null)
    {
        temp[k++] = i ;

    }
}

你没有改变当前的状态,所以总是指向第一个元素。

我不确定你是使用Java的LinkedList <>还是实现自己的。

我写了这个小程序。我认为它证明了你要做的事情:

import java.util.*;

public class Foo {
    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<String>();;
        list.add("Hello");
        list.add("There");
        list.add(null);

        for (String str: list) {
            System.out.println(str != null ? str : "<null>");
        }

        ArrayList<Integer> indexes = new ArrayList<Integer>();
        int index = 0;
        for (String str: list) {
            if (str == null) {
                indexes.add(index);
            }
            ++index;
        }
        for (Integer thisIndex: indexes) {
            System.out.println(thisIndex);
        }
    }
}

最后,您需要将ArrayList转换为int []。但这个小家伙的输出是:

$ javac Foo.java && java Foo
Hello
There
<null>
2

0
投票

我能够用这一行覆盖结果数组。

result = temp;

另外,在List中检查Element是否为null的方法是:

current.getContent() == null;

最后我忘了设置当前指向下一个Element的指针,这实际上是我最大的问题:

current = current.getSucc();

感谢大家的帮助和时间。对此,我真的非常感激!

© www.soinside.com 2019 - 2024. All rights reserved.