js中很好壓入,push即可。
本文談論的是java中對於不確定長度的數組的壓入元素操作。
題目是這樣的:
定義一個數組,40元素,隨機生成0~100整數,求平均值后將低於平均值的元素存儲到一維數組打印並輸出。
起初看到題目,也不是很難,循環遍歷,求平均也簡單,但是,一個不固定長度的數組,該怎么創建出來?當然事先循環出來低於平均值的個數也是可以的,但是不夠簡單,如何在能即時對數組進行壓入元素操作呢?有人想到了 ArrayList ,沒錯,是可以,已經封裝好的 add 方法,很方便。但是我們不用~
import java.util.Arrays; public class LogScoreLowerThanAverage { private int[] allArr; private int[] displayArr; private int len; private int ave; private int sumNum; public void create (int num) { len = num; allArr = new int[len]; for(int i = 0; i < len; i ++) { allArr[i] = (int)(Math.random()*100); } } public void getAve () { sumNum = 0; for(int i = 0; i < allArr.length; i ++) { sumNum += allArr[i]; } ave = sumNum / len; System.out.println("average score is : " + ave); } public void getLowThanAve () { displayArr = new int[0]; for(int i = 0; i < allArr.length; i ++) { if(ave > allArr[i]) { displayArr = insertElement(displayArr, allArr[i]); } } } public int[] insertElement (int[] arr1, int ele) { int[] source = new int[arr1.length + 1]; if(arr1.length == 0){ source[source.length - 1] = ele; } else { System.arraycopy(arr1, 0, source, 0, arr1.length); source[source.length - 1] = ele; } return source; } public void logDisplay () { System.out.println("all array : " + Arrays.toString(allArr)); System.out.println("lower than average : " + Arrays.toString(displayArr)); } public static void main (String[] args) { LogScoreLowerThanAverage l = new LogScoreLowerThanAverage(); l.create(40); l.getAve(); l.getLowThanAve(); l.logDisplay(); } }
閱讀完后相信大家都發現了關鍵的一點:insertElement 方法,這里我們傳入了保存低於平均值的數組以及此次循環低於平均值要壓入數組的元素值,通過創建一個比當前傳入數組長度 +1 的新數組,然后復制源數組元素到新數組中,最后將要插入元素存儲到末位並返回此新數組,功能實現~