如何在Java处理中创建行的ArrayList?
我想用Java创建一个处理行的arraylist。不是java代码行 我初始化arraylist的代码:如何在Java处理中创建行的ArrayList?,java,arraylist,processing,Java,Arraylist,Processing,我想用Java创建一个处理行的arraylist。不是java代码行 我初始化arraylist的代码: private ArrayList <Line2D> lines; // constructors public IrregularPolygon() { myPolygon = new ArrayList<Point2D.Double>(); lines = new ArrayList<Line2D>(); } public vo
private ArrayList <Line2D> lines;
// constructors
public IrregularPolygon()
{
myPolygon = new ArrayList<Point2D.Double>();
lines = new ArrayList<Line2D>();
}
public void draw(PApplet marker)
{
if (myPolygon.size() >= 2)
{
for (int i = 0; i < myPolygon.size() - 1; i++)
{
lines[0] = marker.line((float)myPolygon.get(i).getX(), (float)myPolygon.get(i).getY(), (float)myPolygon.get(i + 1).getX(), (float)myPolygon.get(i + 1).getY());
marker.line((float)myPolygon.get(0).getX(), (float)myPolygon.get(0).getY(), (float)myPolygon.get(i + 1).getX(), (float)myPolygon.get(i + 1).getY());
if (myPolygon.size() > 4 && i > 2)
{
myPolygon.remove(myPolygon.get(i));
}
}
}
}
私有数组列表行;
//建设者
公营机构(
{
myPolygon=新的ArrayList();
行=新的ArrayList();
}
用于生成行并尝试放入arraylist的代码:
private ArrayList <Line2D> lines;
// constructors
public IrregularPolygon()
{
myPolygon = new ArrayList<Point2D.Double>();
lines = new ArrayList<Line2D>();
}
public void draw(PApplet marker)
{
if (myPolygon.size() >= 2)
{
for (int i = 0; i < myPolygon.size() - 1; i++)
{
lines[0] = marker.line((float)myPolygon.get(i).getX(), (float)myPolygon.get(i).getY(), (float)myPolygon.get(i + 1).getX(), (float)myPolygon.get(i + 1).getY());
marker.line((float)myPolygon.get(0).getX(), (float)myPolygon.get(0).getY(), (float)myPolygon.get(i + 1).getX(), (float)myPolygon.get(i + 1).getY());
if (myPolygon.size() > 4 && i > 2)
{
myPolygon.remove(myPolygon.get(i));
}
}
}
}
public void draw(PApplet标记)
{
如果(myPolygon.size()>=2)
{
对于(int i=0;i4&&i>2)
{
myPolygon.remove(myPolygon.get(i));
}
}
}
}
由于某些原因,我无法执行第[0]=..行。。。。它给了我这个错误:表达式的类型必须是数组类型,但它解析为ArrayList
有什么问题吗?如果
行
是数组列表
,则需要调用行。添加(…)
或行。设置(0,…)
,取决于当时数组的大小。因为您使用的是列表,所以请使用“添加/设置”方法将线对象添加到列表中,并使用“获取”方法从列表中读取线对象
由于某些原因,我无法执行第[0]=..行。。。。它给了我这个错误:表达式的类型必须是数组类型,但是
已决定使用ArrayList
怎么了
替换
lines[0]=marker.line((float)myPolygon.get(i).getX(),(float)myPolygon.get(i).getY(),(float)myPolygon.get(i+1).getX(),(float)myPolygon.get(i+1).getY()代码>
与
lines.add(marker.line((float)myPolygon.get(i).getX(),(float)myPolygon.get(i).getY(),(float)myPolygon.get(i+1).getX(),(float)myPolygon.get(i+1).getY())代码>
由于某些原因,我无法执行第[0]=..行
正如其他人所说,您试图在ArrayList
对象上使用数组访问语法。那不行
如果要将对象添加到ArrayList
,则需要使用add()
函数
Line2D yourLine = //...
lines.add(yourLine);
然后使用get()
函数获取对象。请注意,您已经在使用myPolygon
ArrayList
执行此操作
另一个需要考虑的问题:
myPolygon.remove(myPolygon.get(i));
请注意,您正在从头开始迭代myPolygon
ArrayList
。所以索引是0,1,2。。。按这个顺序。如果从myPolygon
中删除对象,则所有后续对象将下移一个索引。因此,当循环迭代时,您将转到下一个索引,但在删除之前跳过了位于该索引的对象。这可能会导致意外行为和其他错误。要解决这个问题,您应该使用迭代器
或按相反顺序在数组列表
上循环。marker.line(…)返回什么?它绘制一条线您需要将那些超长的代码行分解成一些变量。这些变量只是方法的参数,我得到的是:类型ArrayList中的方法集(int,Line2D)不适用于参数(int,void)我的猜测是,处理行实际上并没有返回一行。您究竟是如何使用该行来导致该问题的?我正在尝试将它正在生成的行添加到数组中,但它不允许我这样做。如果我不使用add方法,它只会在屏幕上画一条线。pApplet类的“line”方法的返回类型是什么?@LarryJing如果你想找到问题的解决方案,你需要快速响应。您没有为任何人提供足够的信息来为您提供解决方案。我真的不知道返回类型是什么,它只是处理行。