第一層的 if 邏輯表示 如果新的一個數(shù)A[i]對于 B[]中的數(shù)來說是遞增的,則len加1,這是記錄遞增數(shù)列長度的主要邏輯。else中的邏輯保證B[]中的數(shù)列是最新的遞增數(shù)列。
創(chuàng)新互聯(lián)主營劍川網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶App定制開發(fā),劍川h5小程序設(shè)計(jì)搭建,劍川網(wǎng)站營銷推廣歡迎劍川等地區(qū)企業(yè)咨詢
舉個例子,如果A數(shù)組為[1,2,3,4,5, 3.1, 3.2, 3.3, 3.4]
當(dāng)i=4時 len=4 B=[x,1,2,3,4,x] 循環(huán)結(jié)束后 len=5 B=[x,1,2,3,4,5] 第一層判斷走if
當(dāng)i=5時 len=5 B=[x,1,2,3,4,5] 循環(huán)結(jié)束后 len=5 B=[x,1,2,3,3.1,5] 第一層判斷走else
當(dāng)i=6時 len=5 B=[x,1,2,3,3.1,5] 循環(huán)結(jié)束后 len=5 B=[x,1,2,3,3.1,3.2] 第一層判斷走else
當(dāng)i=7時 len=5 B=[x,1,2,3,3.1,3.2] 循環(huán)結(jié)束后 len=6 B=[x,1,2,3,3.1,3.2,3.3] 第一層判斷走else
...
其中第一層的else中做的工作就是把B從[x,1,2,3,4,5] 一步步變成 [x,1,2,3,3.1,3.2],最終B[]的最后一個元素變成3.2, 在下一次A[i]=3.3的時候,就又會走第一次if的邏輯(len加1)了。
簡單實(shí)現(xiàn)代碼如下:
public class Test{
public static void main(String[] args)
{
for (int i=1;i999999 ;i++ ){ //for循環(huán)
String code=i+"";
int leng=(code.trim()).length(); //定義長度
if(leng==1){
code="00000"+i;
}else if(leng==2){
code="0000"+i;
}else if(leng==3){
code="000"+i;
}else if(leng==4){
code="00"+i;
}else if(leng==5){
code="0"+i;
}
System.out.println("code:"+code);
}
}
}
原理和Java編譯器生成的字節(jié)碼有關(guān),第一條輸出的結(jié)果是0+(-1)+(-2)+(-3)=6,a自減4次變?yōu)?4;第三條輸出的結(jié)果是(-1)+(-2)+(-3)+(-4),b自減4次也變?yōu)?4。
不要研究這種問題,實(shí)際編程中絕對不會出現(xiàn)這種代碼。