2015-05-21 41 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