2013年12月10日 星期二

Java 二維陣列與排序(學生分數排序)

1.
(30%)請建立一個二維陣列(陣列之資料型別請使用double),儲存下列三個學生五次小考的成績,並印出三人成績單。
※若是沒有使用陣列而直接印出結果者零分計算
※請使用格式化輸出,小數點取至第二位,將結果列印成對齊的格式

輸出範例:
12345
190.0075.0055.0080.0076.00
280.0060.0080.0078.0090.00
360.0040.0070.0086.0058.00



2.
(40%)依照第一題的三人成績,回答下面問題(輸出結果一律取至小數點第二位)
利用第一題創建之二維陣列中儲存之內容,計算三人的平均小考成績,之後將平均成績依序存入average[]後並印出(陣列之資料型別請使用double) (15%)

將average[]進行遞增排序後印出(由低至高)(10%)
※import java.util.Arrays; 利用Arrays.sort()來排序
※未使用方法而直接印出排序結果者不予計分

將average[]進行遞減排序後印出(由高至低)(15%)


/* 學生分數(三個學生五個分數) */
double a[][] = {
                         {1 ,1 ,1 ,1 ,1},
                         {28 ,60 ,80 ,78 ,90},
                         {36 ,40 ,70 ,86 ,58}
                        };
/* 學生分數平均 */
Double average[] = new Double[a.length] ;
/* 取到小數第二位 */
DecimalFormat df=new DecimalFormat("#.##");


for(int i = 0 ; a.length > i ; i++){
    for(int j = 0 ; a[i].length > j ;j++ ){
        log("第"+(i+1)+"個學生第"+(j+1)+"次成績:"+df.format(a[i][j]));
        Double objDouble = new Double(a[i][j]);
        if(average[i]==null)
            average[i] = new Double(0);
            average[i] += objDouble;

        if(j == a[i].length-1){
            average[i] = average[i] / a[i].length;
}
    }
    System.out.println("第"+(i+1)+"個學生平均分數為:"+average[i]);
    System.out.println();
}

/* 分數排序 */
Comparator<Double> best = new Comparator<Double>(){
    @Override
    public int compare(Double o1, Double o2) {
        //return (int)((o2 - o1)*100); //由小到小大排序
        //return (int)((o2 - o1)*100); //由大到小排序
    }
};

Arrays.sort(average,best);
for(int i = 0 ; average.length > i ; i++){
    System.out.println("由低至高的分數為:"+average[i]);
}

如果此篇對您有幫助,您可以點選廣告給予最大的動力,感謝您的收看。