簡體   English   中英

Java - 如何使用已作為參數傳遞的元素填充數組

[英]Java - How to populate an array with elements that have been passed as parameters

我想用我收到的作為方法參數的元素填充我在方法中擁有的數組。 我不能使用預定義類中的任何方法,例如ArraysCollections

例子:

在我的主要 class 的主要方法中,我有:

ClassB obj = new ClassB obj ();

obj.addElement(objD1);

obj.addElement(objD2);

我對方法 addElement(B 類)的期望:

public void addElement(ClassD element){

    ClassD[] array = new ClassD[10];

然后我該如何填充?

一個for循環? 兩個for循環?

我想要的最終結果:

array[0] = objD1;

array[1] = objD2;

這個問題不是很清楚。 如果我的理解是正確的,你想定義你的ClassB像:

public class ClassB {
    private ClassD[] array = new ClassD[10];
    private int index;

    public void addElement(ClassB element) {
        array[index++] = element;
    }
}

您要求的代碼可能是array[index++] = element 在這里,我們在 position index中插入array內的element ,然后我們遞增index (使用后遞增運算符++ )。

不過,這種實現幾乎沒有問題。 首先,您不能添加超過 10 個元素。 添加第 11 個元素將導致ArrayIndexOutOfBoundsExcepiton 我建議管理異常並拋出更具描述性的內容,例如:

    public void addElement(ClassB element) {
        if (index >= array.length) {
            throw new TooManyElementsException();
        }

        array[index++] = element;
    }

TooManyElementsException被簡單地定義為:

public class TooManyElementsException extends RuntimeException {
}

編輯

根據您的評論,我可以稍微修改addElement()方法並到達那里。

    public void addElement(ClassB element) {
        int index = 0;

        while (index < array.length && array[index] != null) {
            index++;
        }

        if (index >= array.length) {
            throw new TooManyElementsException();
        }

        array[index] = element;
    }

整個過程有效,因為 Java 在創建新數組時總是將所有元素設置為null 所以,每次我們從0開始尋找第一個null position; 然后,我們把我們的element放在那里。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM