我的車就差一個輪子啦,造好輪子,我就飛上天與太陽肩並肩啦,想想都激動。什麼你要自己造輪子,是不是傻,商店裡不都是別人造好的嗎,又好又方便,只需一點money,你沒有money,那你只能做個安靜的美男子啦。幸運的是編程世界中的輪子不需要money,今天就來看看如何調用庫中的輪子。 今天的內容: 一.修 ...
我的車就差一個輪子啦,造好輪子,我就飛上天與太陽肩並肩啦,想想都激動。什麼你要自己造輪子,是不是傻,商店裡不都是別人造好的嗎,又好又方便,只需一點money,你沒有money,那你只能做個安靜的美男子啦。幸運的是編程世界中的輪子不需要money,今天就來看看如何調用庫中的輪子。
今天的內容:
一.修改bug 這篇博客是接著上篇的,沒有看的,請點擊此出查看:上一篇隨筆 現在揭示那個程式的最大的bug: 看測試代碼,你可能已經猜到啦。看結果: 沒錯,你可以連續猜同一個位置來過關,看看哪裡錯啦,肯定是在checkYourself方法里,看看 源代碼:
1 public String checkYourself(int guess) { 2 String result = "miss"; 3 for(int i: localCells) { 4 if ( i == guess) {//就在這裡,猜中後沒有做任何處理 5 result = "hit"; 6 numOfHit ++; 7 break; 8 } 9 } 10 if (numOfHit == 3) { 11 result = "kill"; 12 } 13 return result; 14 }
既然知道了問題,就該解決它。你可以有以下解決方案。
1.再創建一個boolean[] hitFlag = {false, false, false},猜中哪個位置,就把對應的hitFlag數組中的位置設置為true, 在猜中之後查看hitFlag中相應位置的狀態若為false,則成功,否則猜過,此次失敗。
這個方法是最笨的,所以一般聰明的你不會想到。
2.猜中後可以把那個位置的數字設置為 -1,哈哈,瞬間感覺世間好美好啊。但為什麼不把猜過的去掉呢?從而只需判斷你的猜測結果是否在localCells里就行啦。
3.要是有一種能縮放的數組就好啦,把沒必要的東西都從裡面剔除掉,這樣,程式運行越來越好啊。有沒有呢?還真有一個,java庫中有個ArrayList,非常符合這個要求。
二、ArrayList: