【问题标题】:new to java, want to create a loop that makes objects [duplicate]java新手,想创建一个循环,使对象[重复]
【发布时间】:2016-10-01 19:44:59
【问题描述】:

我正在尝试制作 15 个不同的多边形实例,每个实例具有不同的半径,从 225 开始,每个比另一个短 15 个像素,第二个和第三个字段是对象中心位置的坐标将是地方。我知道 [i] 不起作用,并且我已经读过我应该使用数组,但是我无法将它实现到我的代码中:

public void paintComponent(Graphics g)
{
    Graphics2D g2 = (Graphics2D) g;

    int i;
    int number = 15;
    int radiussize = 225;

    for(i=0;i<=number;i++){
        Shape object[i]= new Shape(radiussize-(i*15),250,300);
        object[i].draw(g2);
    }
}

我希望结果是 15 个名为:

object0, object1, object2...object15.

【问题讨论】:

    标签: java arrays class loops object


    【解决方案1】:

    如果您想在循环中执行此操作,则不能为变量命名。如果你想存储它们,你应该制作对象数组并以这种方式创建它们:

    public void paintComponent(Graphics g) {
        Graphics2D g2 = (Graphics2D) g;
    
        int number = 15;
        int radiusSize = 225;
    
        Shape[] objects = new Shape[number];
    
        for(int i=0; i<number; i++){
            objects[i] = new Shape(radiuSsize - (i * 15), 250, 300);
            objects[i].draw(g2);
        }
    } 
    

    【讨论】:

      【解决方案2】:

      您遇到的具体问题是什么?

      下面的方法不行吗?

      for(i=0;i<=number;i++){
                  Shape object= new Shape(radiussize-(i*15),250,300);
                  object.draw(g2);
                 }
      

      【讨论】:

      • 不,这只是创建一个对象实例。我想要 15 个不同的实例...
      • 循环确实创建了 15 个不同的实例。但据我了解,您希望这些实例以不同的方式命名,以便在代码的后面部分使用。在这种情况下,请使用数组/列表
      【解决方案3】:

      我知道您的代码中某处有一个名为object 的数组,对吗?如果是,那么就这样做,而不是 Shape object[i]=...:

      object[i] = new Shape(...

      它基本上是在名为object 的数组的第i 个位置放置一个新的Shape 对象。就像我说的那样,你需要有那个数组,如果你不把它放在你的班级的某个地方:

      Shape[] object = new Shape[16];

      此代码正在创建一个大小为16Shape 对象数组。如果您只想绘制对象而不将它们存储在任何地方,请执行以下操作:

      new Shape(radiussize-(i*15),250,300).draw(g2);

      如果您希望您的变量名为 object1object2 等 - 您不能这样做,也没有理由需要它。只需将它们存储在一个数组中,并通过arrayName[indexOfElementYouWant] 引用它们。

      【讨论】:

        猜你喜欢
        • 2015-06-29
        • 2018-11-05
        • 1970-01-01
        • 1970-01-01
        • 2018-05-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多