【发布时间】:2019-02-18 21:09:14
【问题描述】:
我试图找出一种在这种情况下覆盖特定数组的方法。 我遍历 LinkedList,当我遇到 Element null 时,我应该将 Element 的索引添加到已经定义的整数数组中。
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 中的元素是否为空?我尝试在我的 if 条件中使用以下内容:
- 当前 == 空
- current.getContent() == null
- current.equals(null)
- current.getContent().equals(null)
所有这些都返回一个 0 的计数器,这意味着它在遇到空元素时没有增加计数器。如何重写 if 条件?
【问题讨论】:
-
1) 没有名为
result的数组。有一个名为result的reference 变量,它可以引用一个数组。在result = temp之前,它指的是一个大小为零的数组。在result = temp之后,它引用了与temp相同的数组。 -
什么是
first? -
First 只是 LinkedList 中的第一个元素。到数组的东西。有一个数组还是有?我的意思是我在方法的开头声明了它。它不应该覆盖它吗?
-
current如果您从不将其推进到下一个元素,它的意义何在?现在,它总是指第一个元素。 -
好的 current.getContent() == null 是要走的路。现在计数器实际上按预期递增。还要感谢您实际将当前指针设置为下一个元素的提示。不敢相信我忘记了。最后一个仍未解决的问题是如何覆盖结果数组?
标签: java arrays nullpointerexception null overriding