天天看點

不确定長度數組的插入元素操作

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 的新數組,然後複制源數組元素到新數組中,最後将要插入元素存儲到末位并傳回此新數組,功能實作~