我希望这段代码能分开偶数和奇数

时间:2016-10-23 00:16:01

标签: java arrays

它打印所有偶数,但只打印奇数13和11.不是3或5.有谁知道我做错了什么?提前致谢。

public class ReadjustingArray {     public static void main(String [] args){

    int[]A={13,3,4,6,8,5,10,11};
    int temp=0;

    for (int i=0; i< A.length; i++){

        if (A[i] % 2 ==0){
            temp=A[i];
            A[i-1] = A[i];
            temp=A[i];
            System.out.print(A[i] + " ");
        }

    }
    for (int j=0; j< A.length; j++){
        if (A[j] % 2 !=0){
            System.out.print(A[j] + " ");
        }
    }     
}   

}

3 个答案:

答案 0 :(得分:2)

不要使用第一个循环修改数组,然后第二个循环将按预期工作。或者,在Java 8+中,您可以使用IntStreamfilter之类的

int[] A = { 13, 3, 4, 6, 8, 5, 10, 11 };
IntStream.of(A).filter(x -> x % 2 == 0)
        .forEachOrdered(x -> System.out.printf("%d ", x));
IntStream.of(A).filter(x -> x % 2 != 0)
        .forEachOrdered(x -> System.out.printf("%d ", x));
System.out.println(); // <-- Adds a new line (and an implicit flush)

答案 1 :(得分:2)

这可以帮到你。

public static void main(String[] args) {
int[] A = { 13, 3, 4, 6, 8, 5, 10, 11 };

for (int i : A) {
        if (isEven(i)) {
            System.out.println(i + " is even");
        } else {
            System.out.println(i + " is odd");
        }
    }
}

static boolean isEven(int number) {
    if ((number % 2) == 0) {
        return true;
    }
    return false;
}

答案 2 :(得分:0)

无需修改数组。只需按照打印平均值的方式打印赔率。使用他们相应的比较逻辑。