我正在试图弄清楚如何在一个数组中对输入列表进行排序, 然后将两个不同的阵列分成偶数或奇数。 我似乎无法在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++;
}
}
答案 0 :(得分:2)
数组在Java中是固定大小的。它们不会动态增长。如果您想要一个可以增长和缩小的类似数组的容器,请使用ArrayList
。
List<Integer> even = new ArrayList<Integer>();
List<Integer> odd = new ArrayList<Integer>();
if (...)
{
even.add(number);
}
else
{
odd.add(number);
}
答案 1 :(得分:2)
您没有正确使用数组。我假设这是一个旨在教你如何使用它们的作业。试试这个教程:
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html
祝你好运!答案 2 :(得分:0)
我不会使用三个数组来执行此操作。只需遍历列表并有两个循环变量引用偶数和奇数索引。这样的事情:
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
}
答案 3 :(得分:0)
两个好的解决方案:
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);
另一个选择是迭代,计算有多少个均值和几率,分配正确大小的数组,然后将数字放入数组中。这也是一个O(n)解决方案。