亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

變量聲明位置不同而已,怎么輸出不同的結果啊?困擾

?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]);

? }

? ? }

這兩個代碼我只是把int num=0放的位置不同,怎么輸出的不一樣啊,前者有3個數,后者有5個數

正在回答

3 回答

只出5個數是因為數組里的符合條件的都已經遍歷完了。其他如上。

0 回復 有任何疑惑可以回復我~

簡單來說,

第一種num是在循環語句for之外定義,你循環一次,它自增一次,根據條件限制,最多它不能超過3

第二種num你把它定義在循環語句for內,那么你循環一次,它自增后又被你定義為0了,無限num=0......

0 回復 有任何疑惑可以回復我~

第一種寫法是對的,求出最后三位.

第二種有兩個問題:

1.第二種代碼,你的int num=0后面沒加分號.

2.先看for語句 (事實上這三個肯定是正數)

第一次循環:最后一位元素---大于0---執行判斷if條件---(不滿足)即在0到100范圍內---跳出if---定義num=0且自增(此時num=1)---再判斷if(num大于3嗎?)(不滿足)跳出---輸出scores[scores.length-1](即倒數第一個元素,最大值)-->然后執行i--

第二次循環(問題在這里):,現在開始第二次循環---倒數第二個元素---大于0---執行判斷if條件---(不滿足)即在0到100范圍內---跳出if---《定義num=0......》《之前第一次循環后num已經自增為1,這里又重新定義為0是干嘛的?只出5個數,沒有無限循環已經很幸運了~~》


最后兩行才是你的癥結所在.

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

變量聲明位置不同而已,怎么輸出不同的結果啊?困擾

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號