因此,该方法应该进入数组,选择正数,然后将这些偶数存储在另一个数组中。
我试过调试检查,试过在if语句中切换值,但什么都不起作用。我对处理数组还是个新手,所以如果我错过了一个非常简单的解决方案,我道歉。
public static void main(String[] args)
{
int [] arr = {2, 1, 4, 3, 6, 5, 8, 7};
int[] arr3 = {1, 2, 1, 2, 3, 4, 5, 1, 2, 3};
int[] arrEvens;
arrEvens = removeEvens(arr);
System.out.println("\nNew array of even values: ");
for (int i : arrEvens)
System.out.print(i + " ");
System.out.println();
arrEvens = removeEvens(arr3);
System.out.println("\nNew array of even values: ");
for (int i : arrEvens)
System.out.print(i + " ");
System.out.println();
public static int[] removeEvens(int[] arr)
{
int[] newArr = arr;
int count = 0;
for(int i = 0; i < arr.length; i++)
{
if (arr[i] % 2 == 0)
{
newArr[count] = arr[i];
count++;
}
}
return newArr;
}
对于arr和arr3,它应该只输出2468和2242,但实际上分别输出24686587和2242345123
2条答案
按热度按时间km0tfn4u1#
首先,要在
removeEvens
方法中创建newArr
,你需要知道arr
中有多少个偶数,但为此你需要遍历数组并计算偶数。在此解决方案中,您将遍历数组两次。
还有另外一种解决办法:
首先,你将创建
newArr
的长度作为arr
的长度。在newArr
中插入偶数,并在偶数的末尾标记为-1。在main方法中,要打印返回的数组,请执行以下操作:rekjcdws2#
与内存分配相关的输出原因。请阅读堆和堆栈内存部分。您认为您创建了
newArr
,但得到的是前一个数组本身。newArr
和arr
只是数组的名称。它们存储在堆栈内存中。但此数组的值存储在堆内存中,并且这两个数组都绑定到存储在堆中的一个数组。如果需要新数组,则需要使用
new int[n]
创建。