變量聲明位置不同而已,怎么輸出不同的結(jié)果啊?困擾
?public void sort(int[] scores){
? ? Arrays.sort(scores) ;
? ? ?int num=0;
? for(int i=scores.length-1;i>=0;i--){
? ? ? if(scores[i]<0||scores[i]>100){
? ? ? ? ? continue;
? ? ? }
? ? ? num++;
? ? ? if(num>3){
? ? ? ? ? break;
? ? ? }
? ? ? System.out.println(scores[i]);
? }
? ? }
與
?public void sort(int[] scores){
? ? Arrays.sort(scores) ;
? ? ?
? for(int i=scores.length-1;i>=0;i--){
? ? ? if(scores[i]<0||scores[i]>100){
? ? ? ? ? continue;
? ? ? }
? ? ?int num=0
? ? ? num++;
? ? ? if(num>3){
? ? ? ? ? break;
? ? ? }
? ? ? System.out.println(scores[i]);
? }
? ? }
這兩個(gè)代碼我只是把int num=0放的位置不同,怎么輸出的不一樣啊,前者有3個(gè)數(shù),后者有5個(gè)數(shù)
2015-03-08
只出5個(gè)數(shù)是因?yàn)閿?shù)組里的符合條件的都已經(jīng)遍歷完了。其他如上。
2015-02-07
簡(jiǎn)單來說,
第一種num是在循環(huán)語句for之外定義,你循環(huán)一次,它自增一次,根據(jù)條件限制,最多它不能超過3
第二種num你把它定義在循環(huán)語句for內(nèi),那么你循環(huán)一次,它自增后又被你定義為0了,無限num=0......
2015-02-07
第一種寫法是對(duì)的,求出最后三位.
第二種有兩個(gè)問題:
1.第二種代碼,你的int num=0后面沒加分號(hào).
2.先看for語句 (事實(shí)上這三個(gè)肯定是正數(shù))
第一次循環(huán):最后一位元素---大于0---執(zhí)行判斷if條件---(不滿足)即在0到100范圍內(nèi)---跳出if---定義num=0且自增(此時(shí)num=1)---再判斷if(num大于3嗎?)(不滿足)跳出---輸出scores[scores.length-1](即倒數(shù)第一個(gè)元素,最大值)-->然后執(zhí)行i--
第二次循環(huán)(問題在這里):,現(xiàn)在開始第二次循環(huán)---倒數(shù)第二個(gè)元素---大于0---執(zhí)行判斷if條件---(不滿足)即在0到100范圍內(nèi)---跳出if---《定義num=0......》《之前第一次循環(huán)后num已經(jīng)自增為1,這里又重新定義為0是干嘛的?只出5個(gè)數(shù),沒有無限循環(huán)已經(jīng)很幸運(yùn)了~~》
最后兩行才是你的癥結(jié)所在.