2013-04-05 172 views
-2

在這個函數中,一旦我的if語句變爲true,它會返回一個值,並且它「踢出」我的功能。我試圖獲得arrayList的其餘元素,所以我知道哪些是我不會訪問它。我的問題是,我怎樣才能從數組中獲得剩餘的元素?ArrayList獲取所有元素

For(Node a:state.children) 
{ 
    state.value = Math.max(state.value,min_value(a, alpha, beta)); 
    alpha = Math.max(alpha,state.value); 
    if(beta <=alpha) 
    { 
     System.out.println("The elements that are going to be skipped are: " + a.label); 
     return state.value; 
    } 
} 

我怎樣才能讓因爲return語句的使用是不會對數組的最後一個元素的副本

+1

你想要的結果是什麼? – chintan 2013-04-05 05:07:08

+2

這就是'return'語句的概念:調用'return'時停止執行該方法。所以,正如@chintan發佈的那樣,你的預期結果是什麼? – 2013-04-05 05:07:27

+0

所以沒有一種方法或指針指向最後的元素? – 2013-04-05 05:08:49

回答

0

有另一個ArrayList可以存放未加載的值。 爲此,將else塊添加到現有if塊。在else塊中添加元素到臨時ArrayList。遍歷臨時ArrayList以獲取未讀取的值。

ArrayList<Node> tempList = new ArrayList<Node>(); 
For(Node a:state.children) 
{ 
    state.value = Math.max(state.value,min_value(a, alpha, beta)); 
    alpha = Math.max(alpha,state.value); 
    if(beta <=alpha) 
    { 
     System.out.println("The elements that are going to be skipped are: " + a.label); 
    } else { 
     tempList.add(a); 
    } 

} 
+0

謝謝@Nandakishore – 2013-04-05 05:19:24

+0

如果有用,請爲我的帖子投票。 – Kishore 2013-04-05 05:20:29

+0

但這並不讓我複製最後的元素 – 2013-04-05 05:21:17

0

如果你不想從函數返回,不要有回報if裏面的語句。如果您需要在外部使用它,請將它們存儲在一個集合中並使用它

+0

我需要打破那裏。我正在遵循alpha beta修剪算法......並且有一個休息時間 – 2013-04-05 05:11:12

+0

'break'會讓你走出循環。 'continue'將跳過循環迭代中的剩餘部分並進入下一次迭代。 'return'將退出該函數。你要哪一個? – rajesh 2013-04-05 05:13:55