我第一次学习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
。
我不确定为什么它不起作用。
我希望这是有道理的。
如果您需要澄清,请告诉我,我是新手使用此网站。
答案 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;
等等......