2015年7月21日 星期二

Java 練習(10):二維陣列1

Java 7 教學手冊第五版 第六章習題

8.下表為某地星期一到星期四的時段一、時段二與時段三的氣溫:
              星期一 星期二 星期三 星期四
時段一  18.2       17.3     15.0       13.4
時段二  23.8       25.1     20.6       17.8
時段三  20.6       21.5     18.4       15.7

請將上表的內容直接於程式中以陣列初值方式設定,並依序完成下列各題:

(a)印出陣列內容
(b)每日的平均溫度
(c)時段一、時段二、時段三的平均氣溫
(d)溫度最高的日子與時段
(e)溫度最低的日子與時段


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
public class app6 {

    double array[][] = {{18.2, 17.3, 15.0, 13.4}, {23.8, 25.1, 20.6, 17.8}, {20.6, 21.5, 18.4, 15.7}};

    public static void main(String[] args) {
        app6 app = new app6();
        app.print();//印出陣列表格
        app.average();//每日平均溫度
        app.averagebytime();//各時段平均溫度
        app.maxdayandtime();//溫度最高
        app.mindayandtime();//溫度最低
    }

    private void print() {
        System.out.println("     星期一 星期二 星期三 星期四");
        for (int i = 0; i < array.length; i++) {
            System.out.print("時段" + (i + 1) + " ");
            for (int j = 0; j < array[i].length; j++) {
                System.out.print(array[i][j] + "  ");
            }
            System.out.println("");
        }
    }

    private void average() {
        double sum[] = {0, 0, 0, 0};
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                sum[j] += array[i][j];//依序將每天的時段1~3先加總
            }
        }
        for (int k = 0; k < sum.length; k++) {
            System.out.println("Day" + (k + 1) + "平均溫度:" + sum[k] / array.length);
        }
    }

    private void averagebytime() {
        double sum = 0;
        for (int i = 0; i < array.length; i++) {
            sum = 0;
            for (int j = 0; j < array[i].length; j++) {
                sum += array[i][j];
            }
            System.out.println("時段" + (i + 1) + "平均溫度:" + sum / array[0].length);
        }
    }

    private void maxdayandtime() {
        int day = 0;
        int time = 0;
        double max = Double.MIN_VALUE;//取預設最低值
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                double sum = array[i][j];
                if (sum > max) {
                    max = sum;
                    day = j;//行
                    time = i;//列
                }
            }
        }
        System.out.println("溫度最高的Day" + (day + 1) + "時段" + (time + 1));
    }

    private void mindayandtime() {
        int day = 0;
        int time = 0;
        double min = Double.MAX_VALUE;//取預設最高值
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                double sum = array[i][j];
                if (sum < min) {
                    min = sum;
                    day = j;//行
                    time = i;//列
                }
            }
        }
        System.out.println("溫度最低的Day" + (day + 1) + "時段" + (time + 1));
    }
}

沒有留言:

張貼留言