-1

Graphics2Dインスタンスに5つの正方形を描画しようとしています。5つの正方形のそれぞれは、左上隅のx座標と左上隅のy座標の両方に対してランダムなdouble値を持つ必要があります。

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値はループの反復ごとに変化しますが、topLeftX部分topLeftY的にから計算されたとしても、同じままであるということです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 に答える