如何从Java中的颜色数组中随机选择一种颜色?
问题描述:
我正在第一次学习Java和编程。我正在使用BlueJ
环境。如何从Java中的颜色数组中随机选择一种颜色?
我在写程序来绘制多边形。我想在每一行绘制后改变颜色。要做到这一点,我想我会创建一个颜色数组,然后使用伪随机数生成器来生成一个值,该值将被用作从数组中获取颜色的索引。我已经包含了来自构造函数方法的一段代码,正如我所知道的,我需要在构造函数中创建数组才能工作。
应该指出,我已经导入了java.awt.Color和java.util.Random。我还包括了
private Color[] colors;
作为一个字段。
public PictureMaker()
{
world = new TurtleWorld(500, 500, "Picture Maker");
fred = new Turtle();
//Allocate the size of the array
colors = new Color[7];
//Initialize the values of the array
colors[0] = new Color(Color.red);
colors[1] = new Color(Color.blue);
colors[2] = new Color(Color.yellow);
colors[3] = new Color(Color.green);
colors[4] = new Color(Color.black);
colors[5] = new Color(Color.pink);
colors[6] = new Color(Color.orange);
}
以下是将调用绘制多边形的实际方法的代码。
/**
* This method takes sides (int) as input and draws a polygon with that number of sides.
*/
public void drawPolygon(int sides)
{
world.dropIn(fred);
fred.penDown();
int angle = 360/sides;
int linesDrawn = 0;
while(linesDrawn < sides)
{
Random r = new Random();
int minColor = 0;
int maxColor = 10;
int R = r.nextInt(maxColor-minColor) + minColor;
fred.right(angle);
fred.forward(60);
linesDrawn += 1;
}
}
我还没有包括任何东西从数组中获取颜色,因为我无法让数组工作。
我收到一条错误消息Incompatible types: java.awt.Color cannot be converted to int
。
我不知道为什么它不起作用。
我希望这是有道理的。
请让我知道,如果你需要澄清,我是新使用本网站。
答
的Color
领域已经Color
型的 - 你不需要调用构造函数Color
。编译器抱怨,因为没有Color
构造函数,它需要Color
参数。我建议你使用更传统命名为大写的人,太 - 与用于简单数组初始化数组初始化:
colors = new Color[]
{
Color.RED, Color.BLUE, Color.YELLOW, Color.GREEN,
Color.BLACK, Color.PINK, Color.ORANGE
};
答
我觉得你的阵列应该是这样的
//Initialize the values of the array
colors[0] = Color.red;
colors[1] = Color.blue;
等等......
答
你的阵列应该像这样:
Color[] colors = new Color[7];
//Initialize the values of the array
colors[0] = Color.red;
colors[1] = Color.blue;
colors[2] = Color.yellow;
colors[3] = Color.green;
colors[4] = Color.black;
colors[5] = Color.pink;
colors[6] = Color.orange;
没有构造对于单独的颜色,因此new Color
未定义。
至于采摘随机:
Color c = colors[randInt(0, colors.length-1)];
其中randInt是这样的方法:
public static int randInt(int min, int max) {
Random rand = new Random();
int randomNum = rand.nextInt((max - min) + 1) + min;
return randomNum;
}
您有什么问题? – brso05 2014-10-30 17:39:19
请注意,您正在为* Javascript *创建片段,这与Java非常不同。 – 2014-10-30 17:41:24
我发现一个问题就是蝙蝠,你正在生成1-10之间的数字,而你的数组只有7个元素... – brso05 2014-10-30 17:41:29