我应该创建一个新数组,它包含数组a和b的第一个元素(如果一个是空的,则为excpet,我必须跳过它)。问题是,当我尝试将int元素添加到ArrayList时,我得到错误: "不兼容的类型:java.util.ArrayList无法转换为int []" 这真烦人.. 这是代码:
public int[] front11(int[] a, int[] b) {
ArrayList<Integer> list = new ArrayList<Integer>();
if (a.length>0 & b.length>0){
list.add(a[0]);
list.add(b[0]);
}
if (b.length==0 & a.length>0){
list.add(a[0]);
}
if (b.length>0 & a.length==0){
list.add(b[0]);
}
return list;
}
答案 0 :(得分:1)
list
不是int[]
,您在这里不需要List
。你也不需要一个实例,所以我做它static
我会内联它(我也会防范null
)。像,
public static int[] front11(int[] a, int[] b) {
int alen = (a != null) ? a.length : 0, blen = (b != null) ? b.length : 0;
if (alen > 0 && blen > 0) {
return new int[] { a[0], b[0] };
} else if (alen > 0) {
return new int[] { a[0] };
} else if (blen > 0) {
return new int[] { b[0] };
} else {
return new int[0];
}
}
答案 1 :(得分:1)
ArrayList
不是数组,无论类的名称如何。它以这种方式命名,因为它在内部使用数组来管理列表。
使用ArrayList
在这里也是过度的。你有4个场景,所以只需编码它们并根据需要创建返回的数组:
public static int[] front11(int[] a, int[] b) {
if (a.length > 0 && b.length > 0)
return new int[] { a[0], b[0] };
if (a.length > 0)
return new int[] { a[0] };
if (b.length > 0)
return new int[] { b[0] };
return new int[0];
}
答案 2 :(得分:-1)
将int []返回类型转换为ArrayList<Integer>
public ArrayList<Integer> front11(int[] a, int[] b) {
ArrayList<Integer> list = new ArrayList<Integer>();
if (a.length>0 & b.length>0){
list.add(a[0]);
list.add(b[0]);
}
if (b.length==0 & a.length>0){
list.add(a[0]);
}
if (b.length>0 & a.length==0){
list.add(b[0]);
}
return list;
}