我试图想办法在这种情况下覆盖特定的数组。我迭代通过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条件中使用以下内容:
所有这些都返回了一个0的计数器,这意味着它在遇到Null-Element时没有增加计数器。如何重写if条件?
问题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
我能够用这一行覆盖结果数组。
result = temp;
另外,在List中检查Element是否为null的方法是:
current.getContent() == null;
最后我忘了设置当前指向下一个Element的指针,这实际上是我最大的问题:
current = current.getSucc();
感谢大家的帮助和时间。对此,我真的非常感激!