java - 根据数字是奇数还是偶数递归地分离数字

标签 java

输入整数类型数组:[24, 53, 20, 35, 34, 64, 14, 12, 21]

在递归函数之后,它应该给出: [53, 35, 21, 24, 20, 34, 64, 14, 12] 奇数放在偶数之前。 代码中遇到溢出错误:

public int[] seperator(int[] arr)
{
    int[] newArr = new int[arr.length] ;
    int i = 0;
    int j = arr.length-1;
    int x = 0;
    if(i == arr.length-1 && j == 0 && x == arr.length-1)
    {
        return newArr;
    }
    else if(arr[x] % 2 != 0)
    {
        newArr[i] = arr[x];
        i++;
    }

    else
    {
        newArr[j] = arr[x];
        j--;
    }
    x++;
    return seperator(newArr);
}

最佳答案

也许你可以尝试使用ArrayLists并实现以下代码:

   import java.util.ArrayList;
   import java.util.List;
   import java.util.Random;

    public class oddeven {

    public static void main(String[] args) {

    List<Integer> l = new ArrayList<Integer>();

    Random rd = new Random();
    for (int i=0; i<10;i++){

        l.add(rd.nextInt(10));  
    }
    List<Integer> lsep = new ArrayList<Integer>(seperator(l));
    System.out.println(l);
    System.out.println(lsep);

}

public static List<Integer> seperator(List<Integer> l) {
    List<Integer> sep = new ArrayList<Integer>();
    int i = 0;
    int even=0, odd =0;
    int len = l.size();

    for(i=0; i<len; i++){
    if(l.get(i) % 2 == 1) {
        odd = l.get(i);
        sep.add(odd);
    } 
}

for(i=0; i<len; i++){
    if(l.get(i) % 2 == 0) {
        even = l.get(i);
        sep.add(even);
    } 
}


    return sep;
   }
}

示例,

对于给定的输入:[8, 9, 9, 2, 9, 5, 8, 3, 10, 6]

它将返回:[9, 9, 9, 5, 3, 8, 2, 8, 10, 6]

关于java - 根据数字是奇数还是偶数递归地分离数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21667098/

相关文章:

java - 如何从 Java 中的 StringBuilder 中删除 <br> 标签?

java - JNI 函数导致 Android 应用程序崩溃

java - 如何将函数重构为目标函数?

java - Camel 响应从 bean 返回到 ActiveMQ 队列

java - 在我实现的 equals() 中使用 boolean 对象 equals()

java - 混淆代码包含相同的成员变量名称

java - JSOUP 问题 - 无法找到或加载主类

java - 使用 GWT Java 发送电子邮件

java - 如何使用 PDFBox 2.0 创建单选按钮组

java 。编写加载文件的最快方法