나는 자동차 좌표 목록을 반복하고 그 위에 다른 기능을 수행하는 프로그램을 가지고있다. 나는 너무 가깝지 않은 연속적인 코디네이트 쌍만 찾고있다. 차량이 오랫동안 정지 해 있다면, 수 천 개의 연속적인 좌표가 서로 겹칠 가능성이 있습니다.for 루프 반복기를 수동으로 업데이트하는 것이 바람직하지 않습니까?
일단 두 개의 좌표를 찾으면 수동으로 반복기 (i = j-1)를 업데이트하여 수천 개의 좌표를 반복해서 넘길 필요가 없습니다. 제 질문은이 좋은 습관입니까? 아니면 실용적인 대안이 있습니까? 이 온라인의 예를 찾을 수 없었습니다. 나는 '계속'진술을 보았지만 이것은 여분의 if 문을 필요로하는 것 같았고 수동 업데이트는 좀 더 '우아함'이었다.
int LatLngSize = latLngList.size();
for (int i = 0; i < LatLngSize; i++) {
j = i + 1;
validPoints = true;
if (LatLngSize > j) {
latLng1.setCoordinate(latLngList.get(i));
latLng2.setCoordinate(latLngList.get(j));
consecutivePointDistance = latLng1.distance(latLng2);
}
while (consecutivePointDistance < 0.05) {
j++;
if (LatLngSize > j) {
latLng2.setCoordinate(latLngList.get(j));
consecutivePointDistance = latLng1.distance(latLng2);
i = j - 1; // This is the potential offender.
} else {
validPoints = false;
consecutivePointDistance = 100;
}
}
//Do stuff with my latlng1 and latlng2
}
매우 좋지는 않지만 유효합니다. 일반적으로 'while'루프로 다시 작성할 수 있습니다 - 조건에 따라 바깥 루프 매개 변수를 다르게 업데이트한다는 사실이 더 분명합니다. 일반적으로'for' 루프는 매번 동일한 증가분으로 실행될 것으로 예상됩니다. 코드를 따르기가 조금 더 어려워 지므로 버그가 발생하기 쉽습니다. – Floris
나는 이런 식으로 할 필요가 없다고 생각합니다. 내 대답은 http://stackoverflow.com/questions/19672975/is-manual-updating-a-for-loop-iterator-bad-practice/19673075#19673075를 참조하십시오. –