这就是我想要实现的目标:
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);
}
答案 0 :(得分:4)
使用&#34;正常&#34; 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
}
答案 1 :(得分:0)
尝试使用普通for循环而不是foreach
答案 2 :(得分: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);
}
答案 3 :(得分:0)
我建议使用包含两个点的单个Line
类,而不是依靠迭代来成功保持同步。对于每个起点和终点,构造您的Line
对象并将其插入到一个arraylist中。
要按照以下方式进行迭代:
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);
}
答案 4 :(得分:0)
你不能同时使用&#39; foreach&#39;你有循环。
如果您确定列表的大小相同,请使用循环:
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);
}
答案 5 :(得分:0)
由于您的数据(startPoint和endPoint)是相关的 - 将它们放在另一个具有startPoint和endPoint成员(类型为Point)的类(比如MyVector)中。拥有这样的结构,您可以遍历MyVector对象列表。