各位大大好,最近在自我學習JAVA,練習到有一個情境是要線性的查找陣列中的元素指標數。
我原本寫了一個方法程式碼如圖:
原本我想要達到的效果是IF有一樣就回傳i的值,else的話就回傳一個-1表示沒有找到。但是發現好像不能這樣寫因為這樣會有兩個return,所以暫時放棄這種寫法。後來看了講師寫成以下語句
照著打居然可以成功,可是我完全看不懂,為甚麼可以這樣寫,我第一種方式的話可以達到一樣效果嗎? 謝謝
可以
只要程式沒寫錯的話
第二種寫法的「完整版本」如下
public static int linesearch(int []list,int n) {
for (int i = 0; i < list.length; i++) {
if (list[i] == n) {
return i;
} else {
}
}
return -1;
}
如果你看得懂的話
講師寫的是「精簡版本」
return 必須在各種情況下都保證有回傳,
需要在for外面有回傳,
才能夠正常編譯.
一般這是IF的簡單寫法。
不過正常最好是如下的寫法
if(條件式) return i;
會比較容易判斷寫作的方式。
基本上來說我個人其實並不鼓勵這種寫法。
容易造成讀程式碼的困擾。
在來,一般在物件回傳的性質上。
如果需要判斷值後輸出的情況下。
最好還是用私域變數的方式處理。
在最後才做 return
或許你其實只是想要不要跑那麼多 for 所以才會中間 return 出去。
而認真來說,如果可以我也會盡量不要用FOR來找值。
JAVA有很多能直接搜尋陣列或是物件(LIST)的應用方式。
用FOR的方式找值並不是很好。