12 Stimmen

Wie kann man Enum-Elemente randomisieren?

Angenommen, Sie haben eine enum mit einigen Elementen

public enum LightColor {
   RED, YELLOW, GREEN
}

Und würde gerne eine beliebige Farbe daraus auswählen.

Ich habe Farben in ein

public List<LightColor> lightColorChoices = new ArrayList<LightColor>();

lightColorChoices.add(LightColor.GREEN);
lightColorChoices.add(LightColor.YELLOW);
lightColorChoices.add(LightColor.RED);

Und dann eine zufällige Farbe wie:

this.lightColor = lightColorChoices.get((int) (Math.random() * 3));

All dies scheint (obwohl es gut funktioniert) unnötig kompliziert zu sein. Gibt es einen einfacheren Weg, um eine zufällige enum Element auswählen?

0 Stimmen

Als Ihr Mitentwickler für eine Zufallszahl? ... Tut mir leid, nein.

0 Stimmen

0 Stimmen

Ich denke, dass diese Frage eher dem vorliegenden Problem entspricht (Hinweis: siehe die Antwort von trashgod): stackoverflow.com/questions/1972392/

0voto

ionree Punkte 45

So lesen Kowser's Antwort, ich kam mit etwas hier. Bei einem enum ChatColor, das verschiedene Farben enthält, könnte man folgendes tun:

private ChatColor getRandomColor() {
    ChatColor randomColor = ChatColor.values()[random.nextInt(ChatColor
            .values().length - 1)];
    ChatColor[] blacklist = { ChatColor.BOLD, ChatColor.ITALIC,
            ChatColor.MAGIC, ChatColor.RESET, ChatColor.STRIKETHROUGH,
            ChatColor.UNDERLINE };
    while (Arrays.asList(blacklist).contains(randomColor)) {
        randomColor = ChatColor.values()[random
                .nextInt(ChatColor.values().length)];
    }
    return randomColor;
}

und haben sogar eine schwarze Liste.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X