【发布时间】:2022-11-27 09:48:02
【问题描述】:
我遇到了一个填写代码的数字教科书问题。所有的代码都是永久性的,无法更改,所以只能使用声明//Write code here的区域来解决问题。
该问题要求实现 removeOdd 方法。
import java.util.Arrays;
public class RemoveTester
{
public static int removeOdd(int[] values, int size)
{
//Write code here
}
public static void main(String[] args)
{
int[] a = { 22, 98, 95, 46, 31, 53, 82, 24, 11, 19 };
int sizeBefore = 8;
int sizeAfter = removeOdd(a, sizeBefore);
System.out.print("a: [ ");
for (int i = 0; i < sizeAfter; i++)
{
System.out.print(a[i] + " ");
}
System.out.println("]");
System.out.println("Expected: [ 22 98 46 82 24 ]");
int[] b = { 23, 97, 95, 45, 31, 53, 81, 24, 11, 19 };
sizeBefore = 7;
sizeAfter = removeOdd(b, sizeBefore);
System.out.print("b: [ ");
for (int i = 0; i < sizeAfter; i++)
{
System.out.print(b[i] + " ");
}
System.out.println("]");
System.out.println("Expected: [ ]");
}
}
我尝试实现 removeOdd 的方法是:
int evenCount = 0;
for(int i = 0; i<size; i++){
if(values[i]%2==0){
evenCount++;
}
}
int[] newValues = new int[evenCount];
int newCount =0;
for(int i = 0; i<evenCount; i++){
if(values[i]%2==0){
newValues[newCount] = values[i];
newCount++;
}
}
values = newValues;
return evenCount;
当程序编译并运行时,main 打印原始数组 a 或 b 的开头,而不仅仅是 a 或 b 中的偶数元素。我找不到将方法 removeOdd 中的原始数组更改为仅包含偶数元素的新数组的方法。我也想不出任何其他方法来做到这一点。任何帮助将不胜感激!
【问题讨论】: