1

我目前正在学习我的 AP Java 编码课程,但遇到了一个有趣的问题。

我正在尝试使用 GObjects/GOval 在图形窗口中创建 100 个具有各种半径和随机颜色的随机圆。我试图找出问题所在,并且我确信 for-loop 和 GOval (circle) 创建之间的通信有问题。我也曾尝试从头开始多次重做此代码,但我一直遇到同样的问题。具体来说,我的问题是我的图形窗口只显示一个随机圆圈而不是 100 个。请帮忙。我的代码如下:

请注意,我选择了变量 c 来随机指定颜色。没有押韵或理由,我只需要使用一个随机值。

import java.awt.Color;
import acm.graphics.GOval;
import acm.program.GraphicsProgram;
import acm.util.RandomGenerator;

public class _100_Random_Circles extends GraphicsProgram 
{

    public _100_Random_Circles()
    {
      // Random Number Generator

      RandomGenerator rgen = new RandomGenerator();

      // Random X-coordinate.
      int x = rgen.nextInt(1, 500);
      // Random Y-coordinate.
      int y = rgen.nextInt(1, 500);
      // Random Circle width
      int c = rgen.nextInt(1, 100);
      // Random Circle height
      int d = rgen.nextInt(1, 100);

            for(int i = 0; i < 100; i++)
            {
            GOval circle = new GOval (x, y, c, d);
            add(circle);

            //Color the circles randomly

            if(c <= 10)
            {
            circle.setFilled(true);
            circle.setColor(Color.BLUE);
            }
            else if(c <= 20)
            {
            circle.setFilled(true);
            circle.setColor(Color.RED);
            }
            else if(c <= 30)
            {
            circle.setFilled(true);
            circle.setColor(Color.YELLOW);
            }
            else if(c <= 40)
            {
            circle.setFilled(true);
            circle.setColor(Color.GREEN);
            }
            else if(c <= 50)
            {
            circle.setFilled(true);
            circle.setColor(Color.ORANGE);
            }
            else if(c <= 60)
            {
            circle.setFilled(true);
            circle.setColor(Color.BLACK);
            }
            else if(c <= 70)
            {
            circle.setFilled(true);
            circle.setColor(Color.GRAY);
            }

            else if(c <= 80)
            {
            circle.setFilled(true);
            circle.setColor(Color.PINK);
            }

            else if(c <= 90)
            {
            circle.setFilled(true);
            circle.setColor(Color.MAGENTA);
            }

            else
            {
            circle.setFilled(true);
            circle.setColor(Color.WHITE);
            }
        }
    }
}
4

2 回答 2

0
  // Random X-coordinate.
  int x = rgen.nextInt(1, 500);
  // Random Y-coordinate.
  int y = rgen.nextInt(1, 500);
  // Random Circle width
  int c = rgen.nextInt(1, 100);
  // Random Circle height
  int d = rgen.nextInt(1, 100);

此代码在您的循环之外。你在同一个地方画了 100 个圆圈。

于 2013-11-13T02:59:01.600 回答
0

正如我在评论中首先指出的那样。

那是因为您的 xycd 定义在循环之外。那么你对所有圈子只有一个值

于 2013-11-13T02:59:46.920 回答