如何创建点,显示它们并将它们存储在某种数组中

Posted

技术标签:

【中文标题】如何创建点,显示它们并将它们存储在某种数组中【英文标题】:How can I create points, display them and store them in some sort of Array 【发布时间】:2019-05-13 15:07:09 【问题描述】:

我想创建点,然后将它们存储在一个数组中。我这样做是为了在之后对我的数据点进行线性回归。所以我需要能够循环遍历我的所有点。

我在网上找不到类似的东西来处理,因为我真的做不到,我需要你的帮助。这是我的方法,但它似乎不起作用:

ArrayList<dataPoint> dataPoints = new ArrayList<dataPoint>();

void setup()
  size(1000, 1000); 
  background(255);

void draw()
  for (int i = 1; i == dataPoints.size(); i++)  
    // An ArrayList doesn't know what it is storing so we have to cast the object coming out
    dataPoint Point = dataPoints.get(i);
    Point.display();

    


void mousePressed() 
  dataPoints.add(new dataPoint(mouseX, mouseY));


class dataPoint 

  float x;
  float y;

  dataPoint(int tempX, int tempY) 
    x = tempX;
    y = tempY;
  

  void display() 
    strokeWeight(10);
    stroke(255,0,0);
    point(x,y);
  
 

我想要一个程序来创建点并将它们存储在一个数组中(或类似的东西,你可以循环使用)。

【问题讨论】:

你能说得更具体些吗?当你说这不起作用时,你是什么意思?你期望代码做什么?它做了什么? 【参考方案1】:

您的大部分代码都是有道理的,我只能发现两个可能会阻止您循环遍历所有要点并将它们可视化的陷阱:

    您的条件是超出范围的数组索引:尝试for (int i = 0; i &lt; dataPoints.size(); i++) 记得清除框架,否则你会一遍又一遍地在相同的点上绘图

记住在 Processing/Java 中数组索引从 0 开始(同样最后一个索引不是数组的 size(),而是少 1,因此 for 条件中的 &lt;

这是您经过上述调整的代码:

ArrayList<dataPoint> dataPoints = new ArrayList<dataPoint>();

void setup()
  size(1000, 1000); 



void draw()
  background(255);
  for (int i = 0; i < dataPoints.size(); i++)  
    // An ArrayList doesn't know what it is storing so we have to cast the object coming out
    dataPoint Point = dataPoints.get(i);
    Point.display();

    


void mousePressed() 
  dataPoints.add(new dataPoint(mouseX, mouseY));


class dataPoint 

  float x;
  float y;

  dataPoint(int tempX, int tempY) 
    x = tempX;
    y = tempY;
  

  void display() 
    strokeWeight(10);
    stroke(255,0,0);
    point(x,y);
  
 

注意 Processing 有一个方便的 PVector 类(具有 x,y 属性),因此您可以执行以下操作:

ArrayList<PVector> dataPoints = new ArrayList<PVector>();

void setup()
  size(1000, 1000); 
  strokeWeight(10);
  stroke(255,0,0);
  noFill();

void draw()
  background(255);
  beginShape();
  for (int i = 0; i < dataPoints.size(); i++)  
    PVector point = dataPoints.get(i);
    vertex(point.x,point.y);
    
  endShape();


void mousePressed() 
  dataPoints.add(new PVector(mouseX, mouseY));

这有点详细,但我建议关注Java Naming Convention 以保持代码一致。 (例如:将dataPoint类重命名为DataPoint,将Point实例重命名为point

【讨论】:

以上是关于如何创建点,显示它们并将它们存储在某种数组中的主要内容,如果未能解决你的问题,请参考以下文章

如何从导入到数组的 png 中创建影片剪辑?

在列表中创建 Spark 数据框后如何使用它们?

在 CoreData 中创建实例

在 Redux thunk 中创建的数组未正确传递到状态树

如何在python中创建一个N次方的特征向量?

如何在Java中创建数组列表