簡體   English   中英

在java中添加類的值

[英]adding values from a class in java

我的書中有一個問題說(沒有答案):

假設我們有一個使用標頭聲明的類Beta:

 class Beta extends Alpha 

所以Beta是Alpha的子類,而在Alpha類中有一個帶頭的方法:

 public int value(Gamma gam) throws ValueException 

編寫一個名為addValues的靜態方法,它接受一個可以是ArrayList<Alpha>ArrayList<Beta>類型的對象,以及一個Gamma類型的對象。 對方法addValues的調用必須返回通過在ArrayList參數中的每個對象上添加值調用的結果而獲得的總和,其中Gamma參數作為每次值調用的參數。 在計算總和時,應忽略任何導致拋出ValueException類型異常的值調用。

我的嘗試:

public static int addValues(ArrayList<? extends Alpha> arr, Gamma gam) {
    int sum = 0;
    for (int i = 0; i < arr.size(); i++) {
        try {
            sum += arr.get(i) + gam;
        } catch (Exception e) {
            i++;
        }
    }
    return sum;
}

雖然我知道對於初學者來說,行sum += arr.get(i) + gam會給我一個錯誤,因為它們不是可以添加的直接int 這本書沒有提供關於這個問題的更多信息,所以我在這里寫的是問題所需的一切。

您應該調用value方法以獲取您應該添加的值。

除此之外,您還可以使用增強的for循環來使代碼更清晰。

public static int addValues(ArrayList<? extends Alpha> arr, Gamma gam) 
{
    int sum = 0;
    for (Alpha alpha : arr) {
        try {
            sum += alpha.value(gam);
        } catch (ValueException e) {
        }
    }
    return sum;
}

使用有界類型的通配符作為Alpha,因為您想要訪問該值然后使用arr。

public static int addValues(ArrayList<? extends Alpha> arr, Gamma gam) 
{
    int sum = 0;
    for (Alpha alpha : arr) {
        try {
            sum += alpha.value(gam);
        } catch (Exception e) {
        }
    }
    return sum;
}

關於壓倒同等職能的第二個問題

public boolean equals(Gamma g) {
        if(g!= null && g instanceof Alpha && value(g) == value(this.myGam)){
            return true;
        }else{
            return false;
        }
    }

暫無
暫無

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

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