我一整天都在想这个问题。
基本上,我已经做了一个for循环,它将条目添加到数组列表中。其中一个条目是“Colour”变量。我使用random.nextInt
为颜色构造函数的红色,绿色和蓝色部分创建新值。我还设置了一个toString
方法,这样我就可以看到进入数组列表的值。
问题是:
当打印出来时,我得到:java.awt.Color[r=248,g=103,b=53]
我明白为什么会这样,我只是想知道如何改变它,使输出显示“橙子”或“绿色”或“purple”,这取决于随机rgb值。
我看了这里,我发现我可能会使用getRGB
方法和解析,这就是我卡住的地方...任何帮助都很好:)
6条答案
按热度按时间rqmkfv5c1#
您可以创建一个扩展Color并具有名为“colorName”的String的类,然后将其打印到toString上。
默认情况下,颜色不存储此名称,而且,很难通过比较这些红色,绿色,蓝色值来识别颜色。
j7dteeu82#
这是不存在的。祝你好运,滚动你自己的-它需要返回256 x 256 x 256(16,777,216)个不同的字符串之一才能工作。例如,你如何区分所有的蓝色阴影?为什么RGB值不适合你?
368yc8dk3#
你可以子类化Color并覆盖toString方法(或者创建一个printColour方法或其他任何名称),然后你可以输出一个特定RGB值范围的特定颜色标签。
显然,您对颜色名称的选择和指定的特定范围将完全是主观的。
ndh0cuux4#
你可以子类化
Color
来覆盖toString()
方法,或者添加你自己的另一个方法来将RGB转换为命名颜色。或者你可以在某处使用一个静态方法来将RGB转换为命名颜色。然而,考虑到有256 * 256 * 256 =~ 1600万种不同的RGB组合,大多数随机RGB组合都不会对应一种指定的颜色。
2ic8powd5#
这是不平凡的,而且相当主观。
但是,您可能想看看http://blog.xkcd.com/2010/05/03/color-survey-results/,它试图回答这个问题。
xwmevbvl6#
我从来没有真正遇到过你所要求的东西,但是这对你有用吗?(你可能需要add more colors来满足你的需要):
样本输出: