ArrayList null not empty



如果输入的ArrayList为空或ArrayList是null,则该方法应返回null。

对于arrayList为null的部分,我很难找到一个有效的解决方案。

我正在检查arrayList是否为空,但我不知道如何检查arrayList是不是为空。

我得到了nullPointerExceptino错误,还有一个错误说,当检查arraylist是否错误时,我的return null语句是死代码。

import java.util.ArrayList;
public class Excerice_1 {
public static void main(String[] args) {
ArrayList<Float> PA = new ArrayList<Float>();

PA.add(null);


System.out.println(PrefixAverage(PA));

}
public static ArrayList<Float> PrefixAverage(ArrayList<Float> X) {
float sum = 0;

ArrayList<Float> PrefixAverages = new ArrayList<Float>();

if (X.isEmpty() )

return null;
else if (X == null)
return null;

else {
for (int i = 0; i < X.size(); i++) {
sum += X.get(i);
PrefixAverages.add(sum / (i+1));

}
return PrefixAverages;
}


}
}

首先,您的代码应该在检查List的空条件之前处理null值。我把这两个条件都结合在一起了,但顺序很重要。即null == X || X.isEmpty()

其次,当进行求和时,您应该检查列表中的项目是否为null,然后如果它为null或您的实际值,则添加0

sum += null != X.get(i) ? X.get(i) : 0;

可行的解决方案是:

public class Excerice_1 {
public static void main(String[] args) {
ArrayList<Float> PA = new ArrayList<Float>();
PA.add(null);

System.out.println(PrefixAverage(PA));
}
public static ArrayList<Float> PrefixAverage(ArrayList<Float> X) {
float sum = 0;
ArrayList<Float> PrefixAverages = new ArrayList<Float>();
if (null == X || X.isEmpty())
return null;
else {
for (int i = 0; i < X.size(); i++) {
sum += null != X.get(i) ? X.get(i) : 0;
PrefixAverages.add(sum / (i+1));
}
return PrefixAverages;
}

}
}

相关内容

  • 没有找到相关文章

最新更新