我编写了一个程序,使用 ArrayList 类将数组排序为奇数和偶数,但是当我尝试通过 display 方法显示两个 ArrayLists 时,没有输出 . note:- 当我尝试在分类方法中显示它们时一切顺利 . 我的 class ..
import java.util.*;
public class SortNumbers{
private static int[] array = {8,78,20,3,27,30,45,25,14};
private static List<Integer> even = new ArrayList<>();
private static List<Integer> odd = new ArrayList<>();
public static void classify(int[] arr, List even , List odd){
even = new ArrayList<Integer>();
odd = new ArrayList<Integer>();
for(int i = 0 ; i < arr.length ; i++){
if(arr[i] % 2 == 0)
even.add(arr[i]);
else
odd.add(arr[i]);
}
}
public static void display(List<Integer> list){
for(Integer i : list)
System.out.println(i);
}
public static void main(String[] args){
classify(array,even,odd);
display(even);
}
}
我无法弄清楚原因??
4 回答
您不需要传递数组或重新初始化它们:
这是因为你的
even
列表是空的:你在classify
中创建一个隐藏静态字段的局部变量 .只需删除:
来自你的分类方法 .
这些是创建了本地引用的本地对象,当函数在与类实例成员同名的classify方法中结束时,它们将被销毁
even = new ArrayList();
odd = new ArrayList();
您需要删除:
and
同时从分类中删除所有参数 . 所以它现在应该是这样的:
通过尝试执行此操作创建本地副本时,不需要将静态参数传递给方法 .