【问题标题】:How to create array from a class constuctor?如何从类构造函数创建数组?
【发布时间】:2015-12-01 17:03:02
【问题描述】:

所以基本上我的程序有一个类,它正在为我的动画构建雨元素。我想知道如何使用数组从此类创建 50 个对象,但同时交替对象中的数据。

 void setup()
  {
   size (400,400);
   noStroke();
   rain = new Rain(20,random(0,10),3,15);
   rain2 = new Rain(random(15,35), random(70,110),3,15);

  }
 void draw()
  {
   background(0);
   rain.colour(125,155,100);
   rain.display();
   rain2.colour(125,155,100);
   rain2.display();
  }

这就是我用来创建 2 个雨滴的方法;正如我所说,如何让数组创建多个对象但在构造函数中保持数据随机化?

这是构造函数,以防您想知道,是的,我对类和 java 本身很陌生。

【问题讨论】:

  • 构造函数在哪里?

标签: java arrays class processing


【解决方案1】:

当您使用其构造函数时,您会创建一个类的实例。您可以将实例存储在数组中。

所以实际上你有两个问题:创建 50 个类的实例,并将这些实例添加到数组中。

您可以使用 for 循环 解决第一个问题,并使用 数组 解决第二个问题:

Rain[] rainDrops = new Rain[50];
for(int i = 0; i < 50; i ++){
   Rain rain = new Rain(random(100), random(100),3,15);
   rainDrops[i] = rain;
}

请注意,您可能会将传递给random() 函数的值基于您的循环变量 i,具体取决于您想要发生的事情。

然后您可以遍历该数组以绘制数组中的每个实例:

for(Rain r : rainDrops){
  r.display();
}

如果您不想提前指定实例数,也可以为此使用 ArrayList

更多信息在the Processing reference:

无耻的自我推销:我已经编写了有关在处理中使用数组和对象的教程herehere

【讨论】:

    【解决方案2】:

    50 个对象:

    Rain obj[]=new Rain[50];
    
    void setup() {
    

    循环迭代:for (int i; ...) : 练习

    构造函数:

    public class Rain {
        public Rain(int a, int b, int c, int d)
        {
        // Do your random ... : exercice
    
        }
    

    绘制:

    void draw()
    {
    // iterate : exercice
    

    【讨论】:

      【解决方案3】:

      创建一个数组列表,然后用随机生成的 Rain 对象填充该列表。稍后,遍历 arraylist 以着色并显示它们。

      ArrayList<Rain> rainObjects;
      
      void setup()
      {
          size (400,400);
          noStroke();
          rainObjects = new ArrayList<Rain>();
          for (int i=0; i<numberOfRainObjectsYouWant; i++)
          {
              // Create Rain object with random parameters
              Rain rain = new Rain(/* Random parameters using the random() method */);
              rainObjects.add(rain);
          }
      }
      
      void draw()
      {
          background(0);
          for (Rain rain : rainObjects)
          {
              rain.colour(125,155,100);
              rain.display();
          }
      }
      

      【讨论】:

      • 尝试了 Mage Xy 的解决方案,它只产生了一个雨滴,并且根据我在“numberOfRaindropsYouWant”中输入的数字,它只会使一个雨滴变大或变小。我要编辑课堂上的任何东西吗?
      • 我对我的答案做了一个小的修改 - 在设置 for 循环中,您需要将 Rain 变量分配给一个新实例,而不是分配给其他地方正在使用的实例。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-24
      • 1970-01-01
      相关资源
      最近更新 更多