我正在尝试制作它,以便仅在我的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
答案 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