我必须创建一个程序,它同时接受偶数和奇数的数组,并将所有偶数放入一个数组中,将所有奇数放入另一个数组中。我使用for循环遍历所有的数字并确定它们是偶数还是奇数,但我遇到的问题是,由于原始数组中的数字是随机的,我不知道偶数组或奇数组的大小,因此无法计算出如何将原始数组中的数字分配给偶数/奇数组,而不留下一大堆斑点,或者没有足够的斑点来存储所有的数字。有什么想法吗?
发布于 2012-09-04 05:27:11
尝试使用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]);
}
}要将ArrayLists转换回数组,您可以执行以下操作
int[] evn = evens.toArray(new Integer[evens.size()]);(注意:未测试的代码,因此可能会有一些打字错误)
编辑:
如果您不允许使用ArrayLists,那么请考虑以下仅使用数组的情况。它的效率不如对原始数组进行两次遍历
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];
}
}发布于 2015-03-28 22:47:58
您可以不使用数组或任何'%‘来完成此操作,这只是一个简单的想法
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;
}
}发布于 2012-09-04 05:26:25
请改用List。这样你就不需要提前声明大小了,它们可以动态增长。
如果你确实需要一个数组,你可以在List上使用toArray()方法。
https://stackoverflow.com/questions/12254145
复制相似问题