java 输出数组里的奇数

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 {

img

            System.out.print(copyNums[i]);
        }
    }
    System.out.print("]");

}

img

img

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("]");
         
        }
}

img