Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java处理中创建行的ArrayList?_Java_Arraylist_Processing - Fatal编程技术网

如何在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

我想用Java创建一个处理行的arraylist。不是java代码行

我初始化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));
           }
       }
   }

}
私有数组列表行;
//建设者
公营机构(
{ 
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如果你想找到问题的解决方案,你需要快速响应。您没有为任何人提供足够的信息来为您提供解决方案。我真的不知道返回类型是什么,它只是处理行。