java - 如何在java中将数组中的数字排序到两个不同的数组中?

标签 java arrays for-loop

我必须创建一个程序,该程序接受偶数和奇数的数组,并将所有偶数放入一个数组,将所有奇数放入另一个数组。我使用 for 循环来循环遍历所有数字并确定它们是偶数还是奇数,但我遇到的问题是,由于原始数组中的数字是随机的,我不知道偶数的大小或奇数数组,因此无法弄清楚如何将原始数组中的数字分配给偶数/奇数数组,而不会留下一堆点,或者没有足够的点来容纳所有数字。有任何想法吗?

最佳答案

尝试使用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]);
   }
}

将 ArrayList 转换回数组,您可以这样做

int[] evn = evens.toArray(new Integer[evens.size()]);

(注意:未经测试的代码,因此可能存在一些拼写错误)

编辑:

如果您不允许使用 ArrayList,那么请考虑以下仅使用数组的内容。它的效率不如必须对原始数组进行两次传递

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];
   }
}

关于java - 如何在java中将数组中的数字排序到两个不同的数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12254145/

相关文章:

java - Java 中 Math.sqrt 的最坏情况时间复杂度

java - 没有从 HttpClient 获得完整的 HTTP 响应

c - C 中的数组和显示不同的输出

JavaScript:如何将 for/of 循环转换为带变量的普通 for 循环?

python - 我如何编写一个函数,它使用尽可能多的 'for loops' 来使用带有字母字符串的列表来对带有空格的列表进行字谜排列?

r - 在for循环中生成序列

java - 在 Mirth 自定义 Web 服务中获取目的地响应

java - Hibernate JPA 联合继承

php数组与数组键和键数组的区别?

python - z3中一定大小的数组