public static void main(String[] args) {
// TODO code application logic here
int[] nums = {1, 2, 3, 4};
int[] copyNums = copyEven(nums);
printInts(copyNums);
}
public static int[] copyEven(int[] nums) {
int a = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[i] % 2 != 0) {
a++;
}
}
int[] copyNums = new int[a];
for (int i = 0; i < copyNums.length; i++) {
copyNums[i] = nums[2 * i];
}
return copyNums;
}
public static void printInts(int[] nums) {
int[] copyNums = copyEven(nums);
System.out.print("[");
for (int i = 0; i < copyNums.length; i++) {
if (i != copyNums.length - 1) {
System.out.print(copyNums[i] + ",");
} else {
System.out.print(copyNums[i]);
}
}
System.out.print("]");
}
copyEven()方法里,第二个for循环那里从数组nums中获取奇数那里错了,修改如下:
public class CopyEvenTest {
public static void main(String[] args) {
// TODO code application logic here
int[] nums = {1, 2, 3, 4};
int[] copyNums = copyEven(nums);
printInts(copyNums);
}
public static int[] copyEven(int[] nums) {
int a = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[i] % 2 != 0) {
a++;
}
}
int[] copyNums = new int[a];
for (int i = 0,k=0; i < nums.length; i++) {
//System.out.println("nums["+i+"]="+nums[i]);
if (nums[i] % 2 != 0) { //当数组nums当前元素是奇数时,把这个元素添加到数组copuNums中,并把把的访问下标k+1
copyNums[k] = nums[ i];
//System.out.println("copyNums["+k+"]="+copyNums[k]);
k++;
}
}
return copyNums;
}
public static void printInts(int[] nums) {
int[] copyNums = copyEven(nums);
System.out.print("[");
for (int i = 0; i < copyNums.length; i++) {
if (i != copyNums.length - 1) {
System.out.print(copyNums[i] + ",");
} else {
System.out.print(copyNums[i]);
}
}
System.out.print("]");
}
}