在这种情况下,我试图找出一种方法来覆盖特定的数组。 通过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?按预期工作?现在,名为result的数组是否包含temp的数组?
第二个问题:如何在没有得到NullpointerException的情况下检查LinkedList中的Element是否为null?我在if条件中尝试使用以下内容:
所有这些都返回了计数器0,这意味着在遇到Null元素时它没有增加计数器。我该如何重写if条件?
答案 0 :(得分:0)
问题1:是。结果和温度引用相同的数据。
问题2:您的for循环有问题:
for(int i = 0 ; i< size() ; i++)
{
if(current.getContent()==null)
{
temp[k++] = i ;
}
}
您没有更改电流,因此它始终指向第一个元素。
我不确定您是使用Java的LinkedList <>还是实现自己的Java。
我写了这个小程序。我认为它可以说明您正在尝试做的事情:
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
答案 1 :(得分:0)
我能够用这一行覆盖结果数组。
result = temp;
检查列表中Element是否为null的方法是:
current.getContent() == null;
最后我实际上忘记了将当前指针设置为下一个元素,这实际上是我最大的问题:
current = current.getSucc();
感谢大家的帮助和时间。我真的很感激!