2017-04-19 59 views
0

我開始用for-each循環替換for循環,但我不知道是否可以用for-each循環替換下面的場景。是否可以使用for-each循環迭代單次迭代中的下一個元素以及How?

示例代碼:

String[] names = {"", ""}; 
for(int i =0; i<names.length - 1; i++) { 
    if(names[i].equals(names[i+1])) 
     break; 
} 

使用for-each循環,我們可以一次遍歷一個元素像

for(String name : names){ 
    System.out.println(name); 
} 

任何人都可以,請幫助我。 謝謝。

更新:

尋找用於下面的代碼片斷廣義解:

boolean flag = false; 
    for(int i=0; i<names.length-1; i++) { 
     // logic 
     for(int j=i+1; j<names.length; j++) { 
      if(names[i].equalsIgnoreCase(names[j])) { 
       flag = true; 
       break; 
      } 
     } 
     if(flag){ 
      break; 
     } 
    } 

是有可能上述取代for循環通過增強for循環?

+1

你不能用''==操作符比較兩個字符串,使用'.equals()' – freedev

+2

您可以對它們進行比較,這是明智的是一個不同的情況。 OP所要的是不可能的,恐怕你必須堅持索引for循環。或者使用增強的for循環自己跟蹤索引。 – Koekje

+2

@freedev確信你可以(並且在某些情況下,它甚至是有意義的)。這只是它通常不會給你想要的結果:D – Mark

回答

3

像這樣的東西?

String lastName = null; 
for (String name : names) { 
    if (name.equals(lastName)) 
    break; 
    lastName = name; 
} 
0
Iterator iter = Arrays.asList(names).iterator(); 
iter.next(); 
for(String name:names) { 
    if(iter.hasNext()&&name.equals(iter.next())) 
    { 
     System.out.println(name); 
     break; 
    } 
} 
+0

請給你的答案添加一些解釋,只是發佈一個代碼片段是不合適的。 –

+0

@bureaquete當然,但看起來像它的自我解釋。只需要迭代並使用它們來實現要求的內容 – Optional

相關問題