Java 将数组排序为偶数和奇数

Java 将数组排序为偶数和奇数,java,arrays,arraylist,static,Java,Arrays,Arraylist,Static,我编写了一个程序,使用ArrayList类将数组排序为奇数和偶数,但是当我试图通过display方法显示两个ArrayList时,没有输出。 注意:-当我尝试在分类方法中显示它们时,一切都很顺利。 这是我的班级 import java.util.*; public class SortNumbers{ private static int[] array = {8,78,20,3,27,30,45,25,14}; private static List<Integer>

我编写了一个程序,使用ArrayList类将数组排序为奇数和偶数,但是当我试图通过display方法显示两个ArrayList时,没有输出。 注意:-当我尝试在分类方法中显示它们时,一切都很顺利。 这是我的班级

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);
    }
}
import java.util.*;
公共类分类号{
私有静态int[]数组={8,78,20,3,27,30,45,25,14};
私有静态列表偶数=新的ArrayList();
私有静态列表奇数=新ArrayList();
公共静态无效分类(int[]arr,列表偶数,列表奇数){
偶数=新的ArrayList();
奇数=新的ArrayList();
对于(int i=0;i

我无法找出原因???

这是因为您的
甚至
列表是空的:您在
分类中创建了一个局部变量,它隐藏了静态字段

只需删除:

even = new ArrayList<Integer>();
odd = new ArrayList<Integer>();
even=newarraylist();
奇数=新的ArrayList();

从您的分类方法中。

这是因为您的
列表为空:您在
分类
中创建了一个局部变量,它隐藏了静态字段

只需删除:

even = new ArrayList<Integer>();
odd = new ArrayList<Integer>();
even=newarraylist();
奇数=新的ArrayList();

通过您的分类方法。

您不需要传递数组或重新初始化它们:

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(){
        for(int i = 0 ; i < array.length ; i++){
            if(array[i] % 2 == 0)
                even.add(array[i]);

            else
                odd.add(array[i]);
        }
    }

    public static void display(List<Integer> list){
        for(Integer i : list)
            System.out.println(i);
    }

    public static void main(String[] args){
        classify();
        display(even);
    }
}
import java.util.*;
公共类分类号{
私有静态int[]数组={8,78,20,3,27,30,45,25,14};
私有静态列表偶数=新的ArrayList();
私有静态列表奇数=新ArrayList();
公共静态无效分类(){
for(int i=0;i
您不需要传递数组或重新初始化它们:

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(){
        for(int i = 0 ; i < array.length ; i++){
            if(array[i] % 2 == 0)
                even.add(array[i]);

            else
                odd.add(array[i]);
        }
    }

    public static void display(List<Integer> list){
        for(Integer i : list)
            System.out.println(i);
    }

    public static void main(String[] args){
        classify();
        display(even);
    }
}
import java.util.*;
公共类分类号{
私有静态int[]数组={8,78,20,3,27,30,45,25,14};
私有静态列表偶数=新的ArrayList();
私有静态列表奇数=新ArrayList();
公共静态无效分类(){
for(int i=0;i
这些是创建的具有本地引用u的本地对象,当函数在与实例成员同名的分类方法中结束时,这些对象将被销毁

偶数=新的ArrayList()

奇数=新的ArrayList()

公共静态无效分类(int[]arr、列表偶数、列表奇数){
//偶数=新ArrayList();使用与实例成员相同的名称创建本地引用
//odd=新ArrayList();使用与实例成员相同的名称创建本地引用
对于(int i=0;i
这些是创建的具有本地引用u的本地对象,当函数在与实例成员同名的分类方法中结束时,这些对象将被销毁

偶数=新的ArrayList()

奇数=新的ArrayList()

公共静态无效分类(int[]arr、列表偶数、列表奇数){
//偶数=新ArrayList();使用与实例成员相同的名称创建本地引用
//odd=新ArrayList();使用与实例成员相同的名称创建本地引用
对于(int i=0;i
您需要删除:

even = new ArrayList<Integer>();
odd = new ArrayList<Integer>();
even=newarraylist();
奇数=新的ArrayList();

同时从分类中删除所有参数。所以现在应该是这样的:

public static void classify(){

    for(int i = 0 ; i < arr.length ; i++){
        if(arr[i] % 2 == 0)
            even.add(arr[i]);

        else
            odd.add(arr[i]);
    }
}
publicstaticvoidclassify(){
对于(int i=0;i

当您试图创建本地副本时,不需要将静态参数传递到方法中。

您需要删除:

even = new ArrayList<Integer>();
odd = new ArrayList<Integer>();
even=newarraylist();
奇数=新的ArrayList();

同时从分类中删除所有参数。所以现在应该是这样的:

public static void classify(){

    for(int i = 0 ; i < arr.length ; i++){
        if(arr[i] % 2 == 0)
            even.add(arr[i]);

        else
            odd.add(arr[i]);
    }
}
publicstaticvoidclassify(){
对于(int i=0;i

静态参数不需要传递到方法中,因为您正在通过尝试这样做来创建本地副本。

@Mike如果您在汇编中编写代码,可能是这样的-在Java中,您可以依靠JVM来执行这种优化…刚刚意识到这是针对Java的。很抱歉,优化确实是由编译器处理的。@Mike如果您在汇编中编写代码,可能是这样的-在Java中,您可以依靠JVM来执行这种优化…只要实现就行了