3

我正在尝试用正方形填充整个屏幕,每个正方形都填充了不同的颜色。我能够生成充满正方形的整个屏幕,但我不能让它们成为随机颜色。这是我到目前为止所拥有的:

import java.util.Random;

public class RGBRandom
{
  public static void main(String[] args)
{
StdDraw.setScale(0, 100);

for (int x = 0; x <= 100; x++)
{     
  for (int y = 0; y <= 100; y++)
  {
    int r = (int)Math.random()*256;

    int g = (int)Math.random()*256;

    int b = (int)Math.random()*256;

    StdDraw.setPenColor(r, g, b);
    StdDraw.filledSquare(x, y, 0.5);
  }
} 
}
}
4

2 回答 2

5

该表达式Math.random()生成一个介于 0 和 1 之间的实数(不包括 1)。您的演员转换为(int)有效地将其转换为0. 您需要在整个表达式周围加上方括号,以便在int将随机数乘以 之后转换为 an 256

例如

int r = (int) (Math.random() * 256);

或者,正如 Nichar 建议的那样,Random改用:

Random random = new Random();

...

int r = random.nextInt(256);
int g = random.nextInt(256);
int b = random.nextInt(256);

将为您提供 0 到 255(含)之间的random.nextInt(256)随机数。最好Random在循环之外创建实例。

于 2016-02-29T18:27:04.417 回答
1

更好地使用nextInt(),所以它看起来像这样:

int randomNum = rand.nextInt(255)+1;
于 2016-02-29T18:31:06.370 回答