首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在java中,如何将数组中的数字排序到两个不同的数组中?

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

Stack Overflow用户
提问于 2012-09-04 05:21:37
回答 7查看 3.7K关注 0票数 0

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

EN

回答 7

Stack Overflow用户

发布于 2012-09-04 05:27:11

尝试使用ArrayList。您可以使用

代码语言:javascript
复制
num % 2 == 0

看看num是偶数还是奇数。如果==为0,则为偶数,否则为奇数。

代码语言:javascript
复制
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]);
   }
}

要将ArrayLists转换回数组,您可以执行以下操作

代码语言:javascript
复制
int[] evn = evens.toArray(new Integer[evens.size()]);

(注意:未测试的代码,因此可能会有一些打字错误)

编辑:

如果您不允许使用ArrayLists,那么请考虑以下仅使用数组的情况。它的效率不如对原始数组进行两次遍历

代码语言:javascript
复制
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];
   }
}
票数 4
EN

Stack Overflow用户

发布于 2015-03-28 22:47:58

您可以不使用数组或任何'%‘来完成此操作,这只是一个简单的想法

代码语言:javascript
复制
input = new Scanner(System.in);
    int x;
    int y = 0; // Setting Y for 0 so when you add 2 to it always gives even
                // numbers
    int i = 1; // Setting X for 1 so when you add 2 to it always gives odd
                // numbers
    // So for example 0+2=2 / 2+2=4 / 4+2=6 etc..
    System.out.print("Please input a number: ");
    x = input.nextInt();

    for (;;) { // infinite loop so it keeps on adding 2 until the number you
                // input is = to one of y or i
        if (x == y) {
            System.out.print("The number is even ");
            System.exit(0);
        }
        if (x == i) {
            System.out.print("The number is odd ");
            System.exit(0);
        }
        if (x < 0) {
            System.out.print("Invald value");
            System.exit(0);
        }
        y = y + 2;
        i = i + 2;

    }

}
票数 1
EN

Stack Overflow用户

发布于 2012-09-04 05:26:25

请改用List。这样你就不需要提前声明大小了,它们可以动态增长。

如果你确实需要一个数组,你可以在List上使用toArray()方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12254145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档