我想创建点,然后将它们存储在数组中。我这样做是为了对数据点进行线性回归。因此,我需要能够遍历所有观点。
我无法在网上找到类似的东西进行处理,而且由于我确实无法做到,因此需要您的帮助。这是我的方法,但似乎不起作用:
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);
}
}
我想要一个程序来创建点并将它们存储在数组中(或类似的东西,可以循环使用)。
您的大多数代码都有意义,我只能发现两个陷阱,它们可能会阻止您遍历所有点并将其可视化:
for (int i = 0; i < dataPoints.size(); i++)
请记住,在Processing / Java中,数组索引从0开始(同样,最后一个索引将不是size()
您数组的索引,而是1少了,因此<
在for条件下)
这是经过上述调整的代码:
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命名约定以使代码保持一致。(例如:将dataPoint
类DataPoint
重命名为,并将Point
实例重命名为point
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句