iT邦幫忙

2021 iThome 鐵人賽

DAY 17
0
自我挑戰組

JAVA的實作與應用系列 第 17

Day 17 Swap

在Java中傳遞參數的方法只有一種那就是傳值,所以在交換數值A B時假如直接用 A = B 的話,會發生以下狀況
https://ithelp.ithome.com.tw/upload/images/20210929/201404567KtMwNEyJe.png

由上圖可知,a b 沒有交換,反而是 a變成了b的值,而b還是b,
因為a = b 代表把b的值傳入a。

因此我們要用swap方法才可以完成交換的動作
概念是宣告另一個物件,在交換的過程將要交換的數暫放在那個物件。
方法如下
https://ithelp.ithome.com.tw/upload/images/20210929/20140456UzErucyVGU.png

宣告整數c,並將a的值先放到c,再把b的值放到a,最後將c的值放到b,
即可完成交換的動作。
https://ithelp.ithome.com.tw/upload/images/20210929/20140456cygRlKsK6r.png

以下有一個洗牌的例子:有A-E五張牌,在每次程式執行執行洗牌的動作。

Step 1 建立String陣列 把A-E放入此陣列
https://ithelp.ithome.com.tw/upload/images/20210929/20140456tkJ7Oet13q.png

Step 2 進入第一個for迴圈,其條件 int i = 0,表示從第零項開始,i代表地i項; i < array.length,代表i會小於陣列的長度; 最後i++,產生完一個亂數就加1,往下一項產生。並產生0-4的亂數,用random方法。
https://ithelp.ithome.com.tw/upload/images/20210929/2014045697pJNYoJTC.png

Step 3 用swap方法將產生的亂數進行交換,在for迴圈內,直到4個亂數產生完。
https://ithelp.ithome.com.tw/upload/images/20210929/201404560IA1TlnRe4.png

Step 4 進入另一個for迴圈,條件一樣,符合的話印出洗牌結果。
https://ithelp.ithome.com.tw/upload/images/20210929/20140456rw7LWgHjfQ.png

程式全碼及執行結果如下:
https://ithelp.ithome.com.tw/upload/images/20210929/20140456PlhJ6VJn0m.png


上一篇
Day 16 for-each
下一篇
Day 18 Sort
系列文
JAVA的實作與應用30

尚未有邦友留言

立即登入留言