gpt4 book ai didi

java - 调用枚举时生成随机值

转载 作者:行者123 更新时间:2023-12-02 23:45:56 24 4
gpt4 key购买 nike

我正在制作一个用于生成分形的应用程序,但我坚持一件事。该程序需要两种颜色:一种用于背景,一种用于分形。所以我做了一个颜色枚举:

public class Property {
public enum Color {

WHITE(new java.awt.Color(255, 255, 255).getRGB()),
BLACK(new java.awt.Color(0, 0, 0).getRGB()),
BLUE(new java.awt.Color(110, 124, 255).getRGB()),
GREEN(new java.awt.Color(121, 206, 30).getRGB()),
RED(new java.awt.Color(255, 58, 36).getRGB()),
YELLOW(new java.awt.Color(254, 255, 57).getRGB()),
ORANGE(new java.awt.Color(255, 133, 46).getRGB()),
PURPLE(new java.awt.Color(206, 27, 255).getRGB()),
PINK(new java.awt.Color(255, 40, 166).getRGB()),
RANDOM(Utils.randomColor()),

@Override
public String toString() {
return this.name().toLowerCase();
}

private int color;

Color(int color) {
this.color = color;
}

public int getRGB() {
return this.color;
}
}
}

randomColor() 方法如下所示:

public class Utils {
private static final Random RANDOM = new Random();

public static int randomColor() {
int r = RANDOM.nextInt(256);
int g = RANDOM.nextInt(256);
int b = RANDOM.nextInt(256);
return new java.awt.Color(r, g, b).getRGB();
}
}

但我注意到随机颜色实际上只创建一次,因此两种颜色是相同的,这显然不是所需的输出。如何在每次调用 Property.Color.RANDOM 时生成两种不同的颜色?

最佳答案

一旦Color枚举被初始化,RANDOM将是一种特定的颜色 - 它可能在不同的执行中有所不同,但在单次运行中,它将保持固定.

您想要的是每次使用RANDOM时生成一个新的颜色。 (至少我是这么理解的)一种方法是使用特定于常量的枚举体:

public enum Color {
//...
RANDOM(0) {
@Override
public int getRGB() {
return Utils.randomColor();
}
};

//...
}
<小时/>

这有其自身的问题。例如,您可能想要生成多种随机颜色,每种颜色保持不变。否则,每次使用该颜色时,都会得到一种新颜色。为了避免这种情况,唯一的方法是根本不使用枚举,至少不完全不使用枚举。基本上,解决方案是执行 java.awt.Color 已经执行的操作:一个可以创建任意实例的简单类,以及枚举一些的 public static final 常量。预定义颜色。

关于java - 调用枚举时生成随机值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31774633/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com