Java随机颜色字符串

时间:2016-02-17 14:29:06

标签: java random colors

我已经编写了这个java方法,但有时颜色String只有5个字符长。有谁知道为什么?

@Test
public void getRandomColorTest() {
    for (int i = 0; i < 20; i++) {
        final String s = getRandomColor();
        System.out.println("-> " + s);
    }
}

 public String getRandomColor() {
    final Random random = new Random();
    final String[] letters = "0123456789ABCDEF".split("");
    String color = "#";
    for (int i = 0; i < 6; i++) {
        color += letters[Math.round(random.nextFloat() * 15)];
    }
    return color;
}

3 个答案:

答案 0 :(得分:17)

使用浮动并使用{ minilr: "Welcome", version: "0.1.8" } 并不是创建此类随机颜色的安全方法。

实际上,颜色代码是十六进制格式的整数。您可以轻松创建如下数字:

round

答案 1 :(得分:2)

您的split将生成一个长度为17的数组,其开头为空字符串。您的生成器偶尔会绘制出第0个元素,这个元素不会影响最终字符串的长度。 (作为副作用,永远不会绘制F。)

  1. 接受split具有奇怪的行为并使用它:放弃使用round的令人讨厌的公式。请使用1 + random.nextInt(16)作为索引。

  2. 不要getRandomColor的每次调用中重新创建生成器:这会破坏生成器的统计属性。将random作为参数传递给getRandomColor

答案 2 :(得分:1)

另外,为了确保您的String始终包含6个字符,请尝试将for循环替换为while。请参阅:

while (color.length() <= 6){
    color += letters[random.nextInt(17)];
}