上堂課作業檢討


練習題(一) 計算三個數字最大值及平均

  • 參數部分可否用int a,b,c代替int[ ] array ?
    可,當數字過多時用陣列會是較佳的辦法

  • 參數部分可否用String[ ] array代替int[ ] array?
    可,但較不建議
    此處進行的是數值運算,我建議先將從edittext取得的string轉型成int再丟進array裡
    比較不會誤導其他工程師,讓他們疑惑為什麼參數數值為String

  • 建議將average() 及 max()分開為兩個function

  • 求最大值程式碼的部分有誤,針對此段程式碼進行檢討

//PURPOSE:學生程式碼
protected static int max(int array  []){ 
    int a[]=new int[3];
    int max=0;
    for(int i=0;i<a.length;i++){
        a[i]=max; /*假設第一個數字即為Max*/

        for(int j=i+1;j<a.length-1;j++){ /*跟下一個數字比較*/
            if(a[j]>max){
                max=a[j];
            }
        }
    }
}

假設第一個數字為max的想法很好,但當我們在求一串數列裡的最大值的時候,只要拿最大值不斷的去跟數列裡每一個數進行比較就好

  1. 參數已傳進來裡面包含有比較數值的array[ ],所以下方a[ ]的部分應直接改使用array,不需要再new了
  2. a[i]=max; 此行有問題

  3. 使用兩個迴圈有點太多了

應該改寫成

//PURPOSE:求一連串數值中的最大值
public static int max(int[] value){
    int max;
    max=value[0];
    for(int i=1;i<value.length;i++){
        if(value[i]>max){
            max=value[i];
        }
    }
    return max;
};

results matching ""

    No results matching ""