possibleRoutes
имеет тип HashSet<ArrayList<Integer>>
. Каждый из списков массивов в possibleRoutes
содержит идентификаторы трубок или вокзалов, соединенных друг с другом в порядке перемещения.Распечатайте список массивов и выберите индекс одного?
for(ArrayList<Integer> route : possibleRoutes) {
ArrayList<Double> routesDistances = new ArrayList<Double>(); // list of the total distances of the routes
double distance = 0;
for (int i=1; i < route.size()-1; i++){
double x = Math.abs(stationLocations.get(route.get(i)).getX() - stationLocations.get(route.get(i-1)).getX());
double y = Math.abs(stationLocations.get(route.get(i)).getY() - stationLocations.get(route.get(i-1)).getY());
double d = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
distance += d;;
}
routesDistances.add(distance);
System.out.print(routesDistances);
}
Это выход до сих пор:
[2163.9082950470897][3494.746239392733][2099.5269818921306][2075.3141294013]
Я хочу, чтобы распечатать список как список массива, где можно выбрать индекс из списка, таких как routesDistances.get(0)
, как для первого индекса. Как вы делаете так, что список будет типом ArrayList<Double>
и возвращаются как:
[2163.9082950470897, 3494.746239392733, 2099.5269818921306, 2075.3141294013]
FYI, есть 'функция Math.hypot' (см. http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#hypot(double.double)) для вычисления таких вещей, как sqrt (x * x + y * y). – ajb
move 'ArrayList routesDistances = new ArrayList ();' вне цикла for –
@IlyaBursov, проблема в том, как он печатает, никогда не должен печатать '[xxxx] [xxxx]': если только 'routesDistances' имеет размер' 1'. Неоднозначный вопрос. – Sage