簡體   English   中英

For-each循環向后迭代

[英]For-each loop is iterating backwards

給定代碼

String[] p = { "A", "B", "C", "D" }; 
String b = ""; 

for ( String q : p ) 
   b = q + b; 

System.out.println( b ); 

我以為輸出是“ ABCD”,但它是“ DCBA”

為什么??

循環每個元素添加到b 那是:

  • 前置“ A”->“ A”
  • 前置“ B”->“ BA”
  • 前置“ C”->“ CBA”
  • 前置“ D”->“ DCBA”

如果要獲取“ ABCD”,請更改邏輯以追加

for ( String q : p ) {
   // b = q + b;  // prepend
   // b = b + q;  // append
   b += q;        // append, using the shorter `+=` notation
}

因為在

b = q + b;
  • q表示當前元素循環正在從數組中獲取
  • b是先前串聯的結果

這意味着您要在舊結果之前添加新零件

表達方式

q + b;

表示new element + old string

對於4元素數組的每次迭代,其值為

b = "A" + "" - resulting in "A"
b = "B" + "A" - resulting in "BA"
b = "C" + "BA" - resulting in "CBA"
b = "D" + "CBA" - resulting in "DCBA"

將分配更改為b = b + q; 或b + = q;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM