仅在for循环中打印所有其他枚举值

时间:2020-05-04 23:12:55

标签: java arrays foreach enums

我正在尝试制作它,以便仅在我的for循环语句中打印出所有其他颜色,但是由于类型差异,我无法将其合并到if语句中。

public enum Example{Red, Blue, Green, Yellow, Orange, Purple, Brown}

public class Test {
    public static void main(String[] args) {
        for (Example colour: Example.values()) {
            if (????) {
                System.out.println(colour);
            }
        }
    }
}

所需的输出:

Red Green Orange Brown

4 个答案:

答案 0 :(得分:2)

您可以像使用ordinal()

for (Example colour : Example.values()) {
    if (colour.ordinal() % 2 == 0) {
        System.out.println(colour);
    }
}

或者,您可以使用外部变量来保存计数。像

int i = 0;
for (Example colour : Example.values()) {
    if (i % 2 == 0) {
        System.out.println(colour);
    }
    i++;
}

但是对于传统的for循环(以2递增)来说,这似乎是个好地方。喜欢,

for (int i = 0; i < Example.values().length; i += 2) {
    System.out.println(Example.values()[i]);
}

这三个都产生您要求的输出。

答案 1 :(得分:1)

使用循环的另一种方法:

boolean toggle = false;
for (Example value : Example.values()) {
  if (toggle ^= true) System.out.println(value);
}

答案 2 :(得分:0)

您可以使用for循环遍历其他所有颜色:

for (int i =0; i< Example.values().length;i+=2){
    System.out.println(Example.values()[i]);
}

答案 3 :(得分:0)

使用Java 8:

import java.util.stream.IntStream;

enum Example{Red, Blue, Green, Yellow, Orange, Purple, Brown}

public class Main {
    public static void main(String[] args) {
        IntStream.range(0, Example.values().length)
        .filter(i -> i % 2 == 0)
        .forEach(i->System.out.println(Example.values()[i]));
    }
}

输出:

Red
Green
Orange
Brown