0

这就是我想要实现的目标:

    public ArrayList<Point> startPoints = new ArrayList<Point>();
    public ArrayList<Point> endPoints = new ArrayList<Point>();

            for (Point startPoint : startPoints) { // <-- How do I do I do 2 at the same time?
                 g.fillOval(startPoint .x, startPoint.y, 10, 10);
                 g.drawLine(startPoint .x, startPoint.y, endPoint.x, endPoint.y);
            }
4

6 回答 6

4

for使用带有索引的“正常” i

// if list1 and list2 have the same length
for(int i = 0;i<list1.size();i++){
   list1.get(i); // do something with that
   list2.get(i); // do something else with that
}
于 2013-11-02T18:45:25.387 回答
0

尝试使用普通的 for 循环而不是 foreach

于 2013-11-02T18:45:41.630 回答
0

如果您无法更改数据结构:

for (int i = 0; i < startPoints.size() && i < endPoints.size(); i++) {
    Point startPoint = startPoints.get(i);
    Point endPoint = endPoints.get(i);
    g.fillOval(startPoint.x, startPoint.y, 10, 10);
    g.drawLine(startPoint.x, startPoint.y, endPoint.x, endPoint.y);

}
于 2013-11-02T18:45:55.510 回答
0

我建议不要依赖迭代来成功保持同步,而是使用Line包含两个点的单个类。对于每个起点和终点,构造您的Line对象并将其插入到数组列表中。

要让它们出来,只需迭代如下:

for (Line line : lines) { // <-- How do I do I do 2 at the same time?
     g.fillOval(line.getStartPoint().x, line.getStartPoint().y, 10, 10);
     g.drawLine(line.getStartPoint().x, line.getStartPoint().y, line.getEndPoint().x, line.getEndPoint.y);
}
于 2013-11-02T18:46:05.323 回答
0

您不能使用您拥有的“foreach”for 循环同时执行这两项操作。

如果您确定列表的大小相同,请使用循环:

        for (int i = 0; i < startPoints.size(); i++) { // <-- How do I do I do 2 at the same time?
             Point startPoint = startPoints.get(i);
             Point endPoint = endPoints.get(i);
             g.fillOval(startPoint .x, startPoint.y, 10, 10);
             g.drawLine(startPoint .x, startPoint.y, endPoint.x, endPoint.y);
        }
于 2013-11-02T18:46:11.957 回答
0

由于您的数据(startPoint 和 endPoint)是相关的 - 将它们放在另一个类(比如 MyVector)中,该类将具有 startPoint 和 endPoint 成员(类型 Point)。拥有这样的结构,您可以遍历 MyVector 对象的列表。

于 2013-11-02T18:51:52.287 回答