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

forindex で「通常」を使用します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

foreach の代わりに通常の for ループを使用してみてください

于 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

反復に頼って同期を正常に保つのではなく、Line2 つのポイントを含む単一のクラスを使用することをお勧めします。始点と終点ごとに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 に答える