-1

我正在尝试在 Graphics2D 实例上绘制 5 个正方形。5 个正方形中的每一个都应具有左上角 x 坐标和左上角 y 坐标的随机双精度值。

double pixelSize = 2.0;

g2d.setColor(color);

for (int i = 0; i < 5; i++) {
    double nextDouble = gen.nextDouble();
    System.out.println("nextDouble: "+nextDouble);
    double topLeftX = nextDouble*(maxX-minX) + minX;
    System.out.println("topLeftX: "+topLeftX);
    double topLeftY = nextDouble*(maxY-minY) + minY;
    System.out.println("topLeftY: "+topLeftY);

    Shape square = new Rectangle2D.Double(topLeftX, topLeftY, pixelSize, pixelSize);
    g2d.fill(square);
    repaint();
    revalidate();
} 

相反,我从println语句中看到的是,这些nextDouble值在循环的每次迭代中都会发生变化,但topLeftXtopLeftY保持不变,即使它们部分是从nextDouble.

我想topLeftX并且topLeftY每次都通过循环进行更改。

4

1 回答 1

1

它们正在改变,但仅在小数点后的数字中,正如人们所期望的那样,给定代码,以及 maxX-minX 和 maxY-minY 的单位差异:

nextDouble: 0.731057369148862
topLeftX: 394.73105736914886
topLeftY: 188.73105736914886
nextDouble: 0.07099203475193139
topLeftX: 394.07099203475195
topLeftY: 188.07099203475192

...

于 2012-11-09T04:05:54.650 回答