我试图用正方形填充整个屏幕,每个正方形都填充不同的颜色。我能够生成整个正方形的屏幕,但我不能让它们成为随机颜色。以下是我到目前为止的情况:
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);
}
}
}
}
答案 0 :(得分:5)
表达式Math.random()
生成0到1之间的实数(不包括1)。您投射到(int)
会有效地将其转换为0
。您需要在整个表达式周围使用括号,以便在将随机数乘以int
之后转换为256
。
E.g。
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);
random.nextInt(256)
将为您提供0到255(含)之间的随机数。最好在循环之外创建Random
的实例。
答案 1 :(得分:1)
更好地使用nextInt()
,所以它看起来像这样:
int randomNum = rand.nextInt(255)+1;