2015-05-21 81 views
0

如果距离小于15,我试图返回routeList,如果该情况是,则不要在while语句之后运行代码。目前routelist在if语句中被覆盖。我怎样才能达到?如果语句满足,打破它之后的代码和代码

我感谢所有帮助。

public ArrayList<Integer> detectRoute(double latD, double longD) { 

     ArrayList<Integer> routeList = new ArrayList<Integer>(); 
     . 
     . 
     . 
    PreparedStatement preparedLatLongName = con 
          .prepareStatement("SELECT lat, longi, name from stops"); 
        ResultSet rsLLN = preparedLatLongName.executeQuery(); 

        // ArrayList<Double> distanceHistory = new ArrayList<Double>(); 
        List<StopItem> distanceHistory = new ArrayList<>(); 

        while (rsLLN.next()) { 
         double latStop = rsLLN.getDouble("lat"); 
         double lonStop = rsLLN.getDouble("longi"); 
         String nameStop = rsLLN.getString("name"); 
         double distStop = haversineDistance(latD, longD, latStop, 
           lonStop); 
         StopItem newItem = new StopItem(nameStop, distStop); 
         distanceHistory.add(newItem); 


         // TODO add the speed here. 
         if (distStop <= 15) { 
          routeList = getByStop(con, calendar, WDay, rsLLN); 
          break; 
         } 

        } 
        //Find the shortest distance and its related longi and lati 
        Collections.sort(distanceHistory); 
        double shortestDistance = distanceHistory.get(0).getStopDist(); 
        String nameShortestDistance = distanceHistory.get(0).getNameStop(); 
     .   
     . 
     . 
     . 
     return routeList; 
} 
+0

'return routeList'? – haifzhan

+1

你能否清楚地解释你的问题。应该在if块中覆盖routerList。 – haifzhan

+0

是的,它应该被覆盖。 –

回答

3

您甚至不必打破循环。只需将break替换为return routeList即可。

0

使用boolean标志?例如:

boolean flag = false; 
while (rsLLN.next()) { 
    // ... 
    if (distStop <= 15) { 
     routeList = getByStop(con, calendar, WDay, rsLLN); 
     flag = true; 
     break; 
    } 
} 
if (!flag) { 
    // ... 
} 
0

正如其他人指出的,你可以返回你的routeList而不是break。 另外,如果你想在while(而不是在中间返回)执行代码,有一种方法可以使用标签(如果可以,应该避免使用)。

someLabel: 
    while (...) { 
    ... 
    if() { 
     ... 
     break someLabel; 
    } 
    } 

// the break sends execution to here