如何从Java中的颜色数组中随机选择颜色?

时间:2014-10-30 17:37:52

标签: java bluej

我第一次学习Java和编程。我正在使用BlueJ环境。

我正在编写一个绘制多边形的程序。我希望在绘制每一行后改变颜色。为此,我想我会创建一个颜色数组,然后使用伪随机数生成器生成一个值,该值将用作从数组中获取颜色的索引。我已经在构造函数方法中包含了一段代码,因为我已经告诉我需要在构造函数中创建数组才能使其工作。

应该注意的是,我已经导入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

我不确定为什么它不起作用。

我希望这是有道理的。

如果您需要澄清,请告诉我,我是新手使用此网站。

3 个答案:

答案 0 :(得分:2)

Color字段已经是Color类型 - 您不需要调用Color构造函数。编译器抱怨,因为Color构造函数没有Color参数。我建议你使用更常规命名的大写的 - 并且为了简单起见,用数组初始化器初始化数组:

colors = new Color[]
{
    Color.RED, Color.BLUE, Color.YELLOW, Color.GREEN,
    Color.BLACK, Color.PINK, Color.ORANGE
};

答案 1 :(得分:1)

你的阵列应该是这样的:

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;
}

答案 2 :(得分:0)

我认为你的数组应该是这样的

//Initialize the values of the array
    colors[0] = Color.red;
    colors[1] = Color.blue;

等等......