Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中,如何将一个数组中的数字排序为两个不同的数组?_Java_Arrays_For Loop - Fatal编程技术网

在java中,如何将一个数组中的数字排序为两个不同的数组?

在java中,如何将一个数组中的数字排序为两个不同的数组?,java,arrays,for-loop,Java,Arrays,For Loop,我必须创建一个程序,将偶数和奇数同时放入一个数组,将所有偶数放入一个数组,将所有奇数放入另一个数组。我使用for循环遍历所有数字并确定它们是偶数还是奇数,但我遇到的问题是,由于原始数组中的数字是随机的,我不知道偶数数组或奇数数组的大小,因此,如果没有一堆剩余的点,或者没有足够的点来容纳所有的数字,我无法想出如何将原始数组中的数字分配给偶数/奇数数组。有什么想法吗 使用列表。然后,您不需要预先声明大小,它们可以动态增长 如果确实需要数组,您可以在以后使用列表上的toArray()方法。使用列表。然

我必须创建一个程序,将偶数和奇数同时放入一个数组,将所有偶数放入一个数组,将所有奇数放入另一个数组。我使用for循环遍历所有数字并确定它们是偶数还是奇数,但我遇到的问题是,由于原始数组中的数字是随机的,我不知道偶数数组或奇数数组的大小,因此,如果没有一堆剩余的点,或者没有足够的点来容纳所有的数字,我无法想出如何将原始数组中的数字分配给偶数/奇数数组。有什么想法吗

使用
列表
。然后,您不需要预先声明大小,它们可以动态增长


如果确实需要数组,您可以在以后使用
列表上的
toArray()
方法。

使用
列表。然后,您不需要预先声明大小,它们可以动态增长


如果确实需要数组,您可以在以后使用
列表上的
toArray()
方法。

尝试使用ArrayList。你可以用

num % 2 == 0
查看num是偶数还是奇数。如果它真的=0,那么它是偶数,否则它是奇数

List<Integer> odds = new ArrayList(); 
List<Integer> evens = new ArrayList();

for (int i = 0; i< array.length; i++) {
   if (array[i] % 2 == 0) {
      evens.add(array[i]);
   }
   else {
       odds.add(array[i]);
   }
}
(注意:未测试的代码,因此可能会有一些拼写错误)

编辑:

如果不允许使用ARARYLIST,那么请考虑以下使用数组的方法。它的效率不如对原始数组进行两次遍历

int oddSize = 0; 
int evenSize = 0; 

for (int i = 0; i< array.length; i++) {
   if (array[i] % 2 == 0) {
      evenSize++;
   }
   else {
      oddSize++;
   }
}


Integer[] oddArray = new Integer[oddSize];
Integer[] evenArray = new Integer[evenSize];

int evenIdx = 0;
int oddIdx = 0;

for (int i = 0; i< array.length; i++) {
   if (array[i] % 2 == 0) {
      evenArray[evenIdx++] = array[i];
   }
   else {
      oddArray[oddIdx++] = array[i];
   }
}
int-oddSize=0;
int evenSize=0;
for(int i=0;i
尝试使用ArrayList。你可以用

num % 2 == 0
查看num是偶数还是奇数。如果它真的=0,那么它是偶数,否则它是奇数

List<Integer> odds = new ArrayList(); 
List<Integer> evens = new ArrayList();

for (int i = 0; i< array.length; i++) {
   if (array[i] % 2 == 0) {
      evens.add(array[i]);
   }
   else {
       odds.add(array[i]);
   }
}
(注意:未测试的代码,因此可能会有一些拼写错误)

编辑:

如果不允许使用ARARYLIST,那么请考虑以下使用数组的方法。它的效率不如对原始数组进行两次遍历

int oddSize = 0; 
int evenSize = 0; 

for (int i = 0; i< array.length; i++) {
   if (array[i] % 2 == 0) {
      evenSize++;
   }
   else {
      oddSize++;
   }
}


Integer[] oddArray = new Integer[oddSize];
Integer[] evenArray = new Integer[evenSize];

int evenIdx = 0;
int oddIdx = 0;

for (int i = 0; i< array.length; i++) {
   if (array[i] % 2 == 0) {
      evenArray[evenIdx++] = array[i];
   }
   else {
      oddArray[oddIdx++] = array[i];
   }
}
int-oddSize=0;
int evenSize=0;
for(int i=0;i
上述答案是正确的,并描述了人们通常如何实现这一点。但是对你的问题的描述让我觉得这是一个类的赋值,动态列表可能是不受欢迎的

所以这里有一个替代方案

将数组分为奇数和偶数两部分。然后计算有多少奇数/偶数,并将值复制到两个数组中

大概是这样的:

static void insertionSort(final int[] arr) {
    int i, j, newValue;
    int oddity;
    for (i = 1; i < arr.length; i++) {
        newValue = arr[i];
        j = i;
        oddity = newValue % 2;
        while (j > 0 && arr[j - 1] % 2 > oddity) {
            arr[j] = arr[j - 1];
            j--;
        }
        arr[j] = newValue;
    }

}

public static void main(final String[] args) {
    final int[] numbers = { 1, 3, 5, 2, 2 };
    insertionSort(numbers);

    int i = 0;
    for (; i < numbers.length; i++) {
        if (numbers[i] % 2 != 0) {
            i--;
            break;
        }
    }

    final int[] evens = new int[i + 1];
    final int[] odds = new int[numbers.length - i - 1];
    if (evens.length != 0) {
        System.arraycopy(numbers, 0, evens, 0, evens.length);
    }
    if (odds.length != 0) {
        System.arraycopy(numbers, i + 1, odds, 0, odds.length);
    }

    for (int j = 0; j < evens.length; j++) {
        System.out.print(evens[j]);
        System.out.print(" ");
    }
    System.out.println();
    for (int j = 0; j < odds.length; j++) {
        System.out.print(odds[j]);
        System.out.print(" ");
    }
}
静态void insertionSort(最终int[]arr){
int i,j,新值;
智力古怪;
对于(i=1;i0&&arr[j-1]%2>奇数){
arr[j]=arr[j-1];
j--;
}
arr[j]=新值;
}
}
公共静态void main(最终字符串[]args){
最终整数[]数={1,3,5,2,2};
插入排序(数字);
int i=0;
对于(;i
上述答案是正确的,并描述了人们通常如何实现这一点。但是对你的问题的描述让我觉得这是一个类的赋值,动态列表可能是不受欢迎的

所以这里有一个替代方案

将数组分为奇数和偶数两部分。然后计算有多少奇数/偶数,并将值复制到两个数组中

大概是这样的:

static void insertionSort(final int[] arr) {
    int i, j, newValue;
    int oddity;
    for (i = 1; i < arr.length; i++) {
        newValue = arr[i];
        j = i;
        oddity = newValue % 2;
        while (j > 0 && arr[j - 1] % 2 > oddity) {
            arr[j] = arr[j - 1];
            j--;
        }
        arr[j] = newValue;
    }

}

public static void main(final String[] args) {
    final int[] numbers = { 1, 3, 5, 2, 2 };
    insertionSort(numbers);

    int i = 0;
    for (; i < numbers.length; i++) {
        if (numbers[i] % 2 != 0) {
            i--;
            break;
        }
    }

    final int[] evens = new int[i + 1];
    final int[] odds = new int[numbers.length - i - 1];
    if (evens.length != 0) {
        System.arraycopy(numbers, 0, evens, 0, evens.length);
    }
    if (odds.length != 0) {
        System.arraycopy(numbers, i + 1, odds, 0, odds.length);
    }

    for (int j = 0; j < evens.length; j++) {
        System.out.print(evens[j]);
        System.out.print(" ");
    }
    System.out.println();
    for (int j = 0; j < odds.length; j++) {
        System.out.print(odds[j]);
        System.out.print(" ");
    }
}
静态void insertionSort(最终int[]arr){
int i,j,新值;
智力古怪;
对于(i=1;i0&&arr[j-1]%2>奇数){
arr[j]=arr[j-1];
j--;
}
arr[j]=新值;
}
}
公共静态void main(最终字符串[]args){
最终整数[]数={1,3,5,2,2};
插入排序(数字);
int i=0;
对于(;i