Java 根据数字是否为';是奇数还是偶数
整数类型的输入数组:[24,53,20,35,34,64,14,12,21] 在递归函数之后,它应该给出:[53,35,21,24,20,34,64,14,12] 奇数排在偶数之前。 代码中出现溢出错误:Java 根据数字是否为';是奇数还是偶数,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 == ar
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);
}
也许您可以尝试使用ArrayList并实现以下代码:
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;
}
}
import java.util.ArrayList;
导入java.util.List;
导入java.util.Random;
公共类奇偶{
公共静态void main(字符串[]args){
列表l=新的ArrayList();
随机rd=新随机();
对于(int i=0;ipublic类Main{
公共静态void main(字符串[]arg){
int[]ar={24,53,20,35,34,64,14,12,21};
新的Main()交换(ar,0);
for(int i=0;i < /代码>也许你想考虑将i和j作为参数传递给方法?只是一个想法……这个问题的指令是使用递归和整数数组作为参数。
public class Main {
public static void main(String[] arg) {
int[] ar = { 24, 53, 20, 35, 34, 64, 14, 12, 21 };
new Main().swap(ar, 0);
for (int i = 0; i < ar.length; i++) {
System.out.print(ar[i]+" ");
}
}
void swap(int[] ar, int i) {
boolean cont = true; // continue or break checking for odd numbers
if (ar[i] % 2 == 0) {
int j = i;
while (j < ar.length - 1 && ar[j] % 2 == 0) {
j++;
}
int temp = ar[j];
if (j == ar.length - 1) {
cont = false;
}
while (i < j) { // move even numbers forward
ar[j] = ar[j - 1];
j--;
}
ar[i] = temp;
}
if (++i < ar.length && cont)
swap(ar, i); // recursive call
}
}