2014-02-12 62 views
-1

我需要根據數組列表的大小調用不同的函數。 即像根據列表大小處理while循環

List<String> lsNextPages = new ArrayList<String>(); 
if(lsNextPages.size() == 0){ 
    lsNextPages = fuction1(parentLink); 
} 
if(lsNextPages.size() == 0){ 
    lsNextPages = function2(parentLink); 
} 
if(lsNextPages.size() == 0){ 
    lsNextPages = function3(parentLink); 
} 

避免,如果循環每個函數調用後檢查,我試圖

while(lsNextPages.size() == 0){ 
      lsNextPages = function1(parentLink); 
      lsNextPages = function2(parentLink); 
      lsNextPages = function3(parentLink); 
     } 

但是,這是行不通的。這是什麼原因,我該如何做到這一點?謝謝。

有了您的permision,我加入了一個例子:

public static void main(String []args) { 
     List<String> lsNextPages = new ArrayList<String>(); 
     while(lsNextPages.size() == 0){ 
      lsNextPages = function1(); 
      lsNextPages = function2(); 
      lsNextPages = function3(); 
     } 
     System.out.println(lsNextPages); 
} 

    static public List<String> function1(){ 
     List<String> list = new ArrayList<String>();; 
     return list; 
    } 
    static public List<String> function2(){ 
     List<String> list = Arrays.asList("1","2"); 
     return list; 
    } 
    static public List<String> function3(){ 
     List<String> list = Arrays.asList("1","2","3"); 
     return list; 
    } 

我需要的是,如果第一功能給出了一個非空列表,不調用下面的函數。即,函數2給出一個非空的列表,所以不要調用函數3。我需要像[1,2]這樣的輸出。 但是這裏的輸出是[1,2,3]。 輸出是相同的,如果我改變while循環與if循環。

+3

請給我們一個不同的例子。目前您只有一種尺寸。 –

+0

爲什麼你有3個'如果'條件相同? – Maroun

+1

還要確保您將大小減小到lsNextPages的大小,否則您將以無限循環結束。 – cafebabe1991

回答

1

你爲什麼選擇while,這會反覆做1 - 3的功能。爲什麼不是

if(lsNextPages.size() == 0){ 
      lsNextPages = function1(parentLink); 
      lsNextPages = function2(parentLink); 
      lsNextPages = function3(parentLink); 
     } 
+0

我修改了這個問題。請檢查一下。 –

1

您已經用while循環替換了3 if(lsNextPages.size() == 0){條件。如果列表的大小仍爲0,那麼while循環可能會執行多次以及可能無限次。
我認爲你必須試試這個:

if(lsNextPages.size() == 0){ 
    lsNextPages = function1(parentLink); 
    lsNextPages = function2(parentLink); 
    lsNextPages = function3(parentLink); 
} 
+0

我修改了這個問題。請檢查一下。 –