2013-12-12 2 views
1

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] 
+0

FYI, есть 'функция Math.hypot' (см. http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#hypot(double.double)) для вычисления таких вещей, как sqrt (x * x + y * y). – ajb

+1

move 'ArrayList routesDistances = new ArrayList ();' вне цикла for –

+0

@IlyaBursov, проблема в том, как он печатает, никогда не должен печатать '[xxxx] [xxxx]': если только 'routesDistances' имеет размер' 1'. Неоднозначный вопрос. – Sage

ответ

0

хочет распечатать список в качестве списка массива, где я могу выбрать индекс из списка, такие как routesDistances.get (0) как для первого индекса .

Как, @IlyaBursov предложил, вы можете объявить routesDistances перед циклом for.

И, для печати из специфических индекса, вы можете использовать subList(fstIndex, lstIndex) функцию следующим образом:

System.out.print(routesDistances.subList(index, aList.size())); 
1

Просто поместите

ArrayList<Double> routesDistances = new ArrayList<Double>(); 

перед тем

for(ArrayList<Integer> route : possibleRoutes) 

после петля ваши routesDistances понравится: [2163,9082950470897, +3494,746239392733, +2099,5269818921306, +2075,3141294013]

, а затем выход в одном цикле просто написать так:

for(Double d:routesDistances){ 
    System.out.println(d); 
} 
+0

Проблема решена! благодаря – user3079679

Смежные вопросы