Java 向数组中添加偶数和奇数整数

Java 向数组中添加偶数和奇数整数,java,Java,我想知道如何在一个数组中对输入列表进行排序, 然后用它做两个不同的数组,可以是偶数,也可以是奇数。 我似乎无法将整数添加到if循环中的数组中 这是我的密码: Scanner in = new Scanner (System.in); System.out.print("Enter a number"); int number = in.nextInt(); int [] x = new int[0]; int [] even = new int [0]; int [] od

我想知道如何在一个数组中对输入列表进行排序, 然后用它做两个不同的数组,可以是偶数,也可以是奇数。 我似乎无法将整数添加到if循环中的数组中

这是我的密码:

 Scanner in = new Scanner (System.in);

System.out.print("Enter a number");
    int number = in.nextInt();


 int [] x = new int[0];
 int [] even = new int [0];
 int [] odd = new int [0];



for (int i = 0; i <x.length; i++)
{

    if (in.nextInt() == 0){
        for (i = 0; i <x.length; i++)
        {
            if (x[i] % 2 == 0)
            {
            even = even + x[i];
            System.out.print("Even numbers = " + even);
            i++;
            }
            if (x[i] % 2 != 0)
            {
            odd = odd + x[i];
            System.out.print("Odd numbers = " + odd);
            i++;
            }
        }
        break;
                }

    else {
        x[i] = number;
        i++;
        }

}
Scanner-in=新的扫描仪(System.in);
系统输出打印(“输入数字”);
int number=in.nextInt();
int[]x=新的int[0];
int[]偶数=新的int[0];
int[]奇数=新int[0];

for(int i=0;i数组在Java中是固定大小的。它们不会动态增长。如果您想要类似数组的容器,可以使用
ArrayList

List<Integer> even = new ArrayList<Integer>();
List<Integer> odd  = new ArrayList<Integer>();

if (...)
{
    even.add(number);
}
else
{
    odd.add(number);
}
List偶数=new ArrayList();
List奇数=新的ArrayList();
如果(…)
{
偶数。添加(数字);
}
其他的
{
奇数。加(数);
}

数组在Java中是固定大小的。它们不会动态增长。如果您想要一个类似数组的容器,可以使用
ArrayList

List<Integer> even = new ArrayList<Integer>();
List<Integer> odd  = new ArrayList<Integer>();

if (...)
{
    even.add(number);
}
else
{
    odd.add(number);
}
List偶数=new ArrayList();
List奇数=新的ArrayList();
如果(…)
{
偶数。添加(数字);
}
其他的
{
奇数。加(数);
}

您没有正确使用数组。我假设这是为教您如何使用数组而设计的家庭作业。请尝试本教程:


祝你好运!

你没有正确使用数组。我假设这是专门教你如何使用数组的家庭作业。试试本教程:


祝你好运!

我不会使用三个数组来完成此操作。只需遍历列表,并使用两个引用偶数和奇数索引的循环变量。类似如下:

int evenIndex=0,oddIndex=1;
int evenSum=0,OddSum=0;
int [] x=new int[10];

 while(evenIndex <= x.length && oddIndex <= x.length)
        {
          evenSum+=x[evenIndex];
           oddSum+=x[oddIndex];


             evenIndex+=2;
             oddIndex+=2 

            }
int-evenIndex=0,oddIndex=1;
int evenSum=0,OddSum=0;
int[]x=新的int[10];

while(evenIndex我不会使用三个数组来执行此操作。只需遍历列表,并使用两个循环变量来引用偶数和奇数索引。类似如下:

int evenIndex=0,oddIndex=1;
int evenSum=0,OddSum=0;
int [] x=new int[10];

 while(evenIndex <= x.length && oddIndex <= x.length)
        {
          evenSum+=x[evenIndex];
           oddSum+=x[oddIndex];


             evenIndex+=2;
             oddIndex+=2 

            }
int-evenIndex=0,oddIndex=1;
int evenSum=0,OddSum=0;
int[]x=新的int[10];
而(均匀指数两个好的解决方案:

int [] x = new int[0];
LinkedList<Integer> even = new LinkedList<Integer>(),
                     odd = new LinkedList<Integer>();

for(int num: x)
    if (x & 1 == 1)
        odd.add(num);
    else
        even.add(num);
int[]x=新的int[0];
LinkedList偶数=新建LinkedList(),
奇数=新链接列表();
for(int num:x)
如果(x&1==1)
奇数相加(num);
其他的
偶数。添加(num);
另一种方法是迭代,计算有多少个偶数和赔率,分配正确大小的数组,然后将数字放入数组。这也是一种O(n)解决方案。

两个好的解决方案:

int [] x = new int[0];
LinkedList<Integer> even = new LinkedList<Integer>(),
                     odd = new LinkedList<Integer>();

for(int num: x)
    if (x & 1 == 1)
        odd.add(num);
    else
        even.add(num);
int[]x=新的int[0];
LinkedList偶数=新建LinkedList(),
奇数=新链接列表();
for(int num:x)
如果(x&1==1)
奇数相加(num);
其他的
偶数。添加(num);

另一种方法是迭代,计算有多少个偶数和赔率,分配正确大小的数组,然后将数字放入数组中。这也是一种O(n)解决方案。

谢谢!也会尝试,如果您需要作为数组的结果,只需使用
偶数.toArray()
或与奇数相同。
数组列表不会是O(n^2)。向数组列表添加项需要O(1)摊销时间,因此添加n个元素就是O(n)摊销。@JohnKugelman实际上你说得对,它不是O(n^2),想想看。
ArrayList
s通过加倍而不是递增的方式来增长,所以你的平均案例时间实际上是O(n log n),我认为,因为
add
实际上需要O(n)表示我们需要添加的n次日志中的n次。因此,每次添加都需要O(log n)。这样做n次显然就是O(n log n)。但是,如果您为ArrayList提供了初始容量参数,以确保它们永远不必调整大小,那么您可以在O(n)的平均情况下执行此操作,尽管此时您不会保存任何额外的RAM。@AJMansfield如果n是项目总数,
add
不接受O(n)当它必须调整大小时,需要O(k),其中k是当时数组的大小。对于容量倍增实现,k是一系列倍增数,其总和约为2n。这意味着这些中间调整需要O(2n)。当然,从数学上讲,O(2n)=O(n),那么我们就是这样了:将n个元素添加到ArrayList需要O(n)个摊销时间。“摊销”帐户用于偶尔调整大小;如果将它们全部平均,最终仍然会得到O(n)。谢谢!也会尝试一下,如果您需要作为数组的结果,只需使用
偶数.toArray()
或与奇数相同。
数组列表不会是O(n^2)。向数组列表添加项需要O(1)摊销时间,因此添加n个元素就是O(n)摊销。@JohnKugelman实际上你说得对,它不是O(n^2),想想看。
ArrayList
s通过加倍而不是递增的方式来增长,所以你的平均案例时间实际上是O(n log n),我认为,因为
add
实际上需要O(n)表示我们需要添加的n次日志中的n次。因此,每次添加都需要O(log n)。这样做n次显然就是O(n log n)。但是,如果您为ArrayList提供了初始容量参数,以确保它们永远不必调整大小,那么您可以在O(n)的平均情况下执行此操作,尽管此时您不会保存任何额外的RAM。@AJMansfield如果n是项目总数,
add
不接受O(n)当它必须调整大小时,需要O(k),其中k是当时数组的大小。对于容量倍增实现,k是一系列倍增数,其总和约为2n。这意味着这些中间调整需要O(2n)。当然,从数学上讲,O(2n)=O(n),那么我们就是这样了:将n个元素添加到ArrayList需要O(n)个摊销时间。“摊销”帐户用于偶尔调整大小;如果将它们全部平均,则仍然会得到O(n)。这不是OP要求的。OP希望分离本身为偶数或奇数的元素,而不是在偶数和奇数标记处添加元素。另外,我不是100%确定,但您的解决方案将始终在